{"version":3,"file":"/js/front.js","mappings":"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","sources":["webpack:///./resources/assets/js/common.js","webpack:///./resources/assets/js/common/countdown.js","webpack:///./resources/assets/js/common/password-strength.js","webpack:///./resources/assets/js/front/base.js","webpack:///./resources/assets/js/front/cookie-banner.js","webpack:///./resources/assets/js/front/custom.js","webpack:///./resources/assets/js/front/index.js","webpack:///./resources/assets/js/front/radio.js","webpack:///./resources/assets/js/front/swiper-setup.js","webpack:///./resources/assets/js/front/taketime.js","webpack:///./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack:///./node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack:///./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/display/placeholder.js","webpack:///./node_modules/codemirror/addon/edit/continuelist.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/inputmask/dist/inputmask.js","webpack:///./node_modules/jquery-countdown/dist/jquery.countdown.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/js.cookie/dst/Cookie.js","webpack:///./node_modules/simplemde/src/js/codemirror/tablist.js","webpack:///./node_modules/simplemde/src/js/simplemde.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/components/virtual/virtual.js","webpack:///./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack:///./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/esm/components/parallax/parallax.js","webpack:///./node_modules/swiper/esm/components/zoom/zoom.js","webpack:///./node_modules/swiper/esm/components/lazy/lazy.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/a11y/a11y.js","webpack:///./node_modules/swiper/esm/components/history/history.js","webpack:///./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack:///./node_modules/typo-js/typo.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/array-slice-simple.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/array-sort.js","webpack:///./node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-iter-result-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/define-built-ins.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/get-json-replacer-function.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/is-constructor.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/core-js/internals/iterator-create-constructor.js","webpack:///./node_modules/core-js/internals/iterator-define.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/regexp-get-flags.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js/internals/symbol-registry-detection.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/url-constructor-detection.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/core-js/internals/well-known-symbol-define.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.json.stringify.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.for.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/marked/lib/marked.cjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./resources/assets/js/front.js"],"sourcesContent":["try {\r\n window.$ = window.jQuery = require('jquery');\r\n window.SimpleMDE = require('simplemde')\r\n\r\n require('bootstrap-sass');\r\n\r\n} catch (e) {\r\n}\r\n","require('jquery-countdown');\r\n\r\nlet $clock = $('.js-countdown');\r\n$(document).ready(function () {\r\n if ($clock.length > 0) {\r\n let countdown = $clock.data('expire');\r\n\r\n $clock.countdown(countdown).on('update.countdown', function (event) {\r\n let weeks = parseInt(event.strftime('%-w'), 10);\r\n if (weeks > 0) {\r\n $clock.find('div[data-type=\"weeks\"] .__digit').html(weeks < 10 ? ((weeks === 0 ? '' : '0') + weeks) : weeks);\r\n $clock.find('div[data-type=\"weeks\"] .__label').html(event.strftime('Week%!w'));\r\n } else {\r\n $clock.find('div[data-type=\"weeks\"]').remove();\r\n }\r\n\r\n let days = parseInt(event.strftime('%-d'), 10);\r\n $clock.find('div[data-type=\"days\"] .__digit').html(days < 10 ? (days === 0 ? '00' : '0' + days) : days);\r\n $clock.find('div[data-type=\"days\"] .__label').html(event.strftime('Day%!d'));\r\n\r\n $clock.find('div[data-type=\"hours\"] .__digit').html(event.strftime('%H'));\r\n $clock.find('div[data-type=\"hours\"] .__label').html(event.strftime('Hour%!H'));\r\n\r\n $clock.find('div[data-type=\"minutes\"] .__digit').html(event.strftime('%M'));\r\n $clock.find('div[data-type=\"minutes\"] .__label').html(event.strftime('Minute%!M'));\r\n\r\n $clock.find('div[data-type=\"seconds\"] .__digit').html(event.strftime('%S'));\r\n $clock.find('div[data-type=\"seconds\"] .__label').html(event.strftime('Second%!S'));\r\n\r\n $clock.removeClass('hide');\r\n });\r\n }\r\n});\r\n","let $strengthIndicator = $('.js-strength-indicator');\r\nif ($strengthIndicator.length > 0) {\r\n $(document).on('keyup', 'input[name=\"password\"]', function () {\r\n let value = $(this).val(),\r\n total = 0;\r\n\r\n $strengthIndicator.removeClass(function (index, css) {\r\n return (css.match(/(^|\\s)__\\S+/g) || []).join(' ');\r\n });\r\n\r\n if (value.length >= 6) {\r\n total++;\r\n }\r\n\r\n if (/[A-Z]/.test(value)) {\r\n total++;\r\n }\r\n\r\n if (/[0-9]/.test(value)) {\r\n total++;\r\n }\r\n\r\n if (/^[a-zA-Z0-9- ]*$/.test(value) === false) {\r\n total++;\r\n }\r\n\r\n if (value.length < 6) {\r\n total = 0;\r\n $strengthIndicator.addClass('_short');\r\n } else {\r\n $strengthIndicator.removeClass('_short');\r\n }\r\n\r\n switch (total) {\r\n case 1:\r\n $strengthIndicator.addClass('__weak');\r\n break;\r\n case 2:\r\n $strengthIndicator.addClass('__bad');\r\n break;\r\n case 3:\r\n $strengthIndicator.addClass('__good');\r\n break;\r\n case 4:\r\n $strengthIndicator.addClass('__strong');\r\n break;\r\n }\r\n });\r\n}\r\n","let Inputmask = require('inputmask');\r\n\r\nwindow.mobileCheck = function () {\r\n let check = false;\r\n (function (a) {\r\n // noinspection RegExpSingleCharAlternation,RegExpRedundantEscape\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\r\n })(navigator.userAgent || navigator.vendor || window.opera);\r\n return check;\r\n};\r\n\r\n// region Radio and Checkbox Fix\r\n$('.radio-label').keypress(function (e) {\r\n if (e.keyCode === 0 || e.keyCode === 32) {\r\n $(this).find('input').prop('checked', true);\r\n }\r\n});\r\n$(document).on('click', '.radio-wrapper', function (e) {\r\n let name = $(this).find('input').attr('name')\r\n\r\n $('input[name=\"' + name + '\"]').each(function () {\r\n $(this).removeAttr('checked');\r\n });\r\n\r\n $(this).find('input').prop('checked', true);\r\n});\r\n\r\n$('.checkbox-label').keypress(function (e) {\r\n if (e.keyCode === 0 || e.keyCode === 32) {\r\n let $ele = $(this).find('input');\r\n $ele.prop('checked', !$ele.is(':checked'));\r\n }\r\n});\r\n// endregion\r\n\r\n// region Modal trap keyboard focus function\r\nfunction trapKeyboardFocus(selector_id) {\r\n const modal = document.querySelector(selector_id); // select the modal by it's id\r\n if (!modal) {\r\n console.error('Modal does not exist: ' + selector_id);\r\n return;\r\n }\r\n\r\n // add all the elements inside modal which you want to make focusable\r\n const focusableElements =\r\n '[href], button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n\r\n const firstFocusableElement = modal.querySelectorAll(focusableElements)[0]; // get first element to be focused inside modal\r\n const focusableContent = modal.querySelectorAll(focusableElements);\r\n const lastFocusableElement = focusableContent[focusableContent.length - 1]; // get last element to be focused inside modal\r\n\r\n document.addEventListener('keydown', function (e) {\r\n let isTabPressed = e.key === 'Tab';\r\n\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n\r\n if (e.shiftKey) { // if shift key pressed for shift + tab combination\r\n if (document.activeElement === firstFocusableElement) {\r\n console.log('shift');\r\n lastFocusableElement.focus(); // add focus for the last focusable element\r\n e.preventDefault();\r\n }\r\n } else { // if tab key is pressed\r\n if (document.activeElement === lastFocusableElement) { // if focused has reached to last focusable element then focus first focusable element after pressing tab\r\n console.log('tab');\r\n firstFocusableElement.focus(); // add focus for the first focusable element\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n firstFocusableElement.focus();\r\n}\r\n\r\n// end region\r\n\r\n//region Side Menu Toggle (hamburger on mobile)\r\n$(document).on('click', '.js-toggle-side-menu', function (event) {\r\n event.preventDefault();\r\n let $sideMenu = $('.js-side-menu');\r\n $sideMenu.toggleClass('open');\r\n\r\n if ($sideMenu.hasClass('open')) {\r\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'true');\r\n\r\n $sideMenu.attr('aria-hidden', 'false');\r\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'false');\r\n $sideMenu.find('a').attr('tabindex', '0').attr('aria-hidden', 'false');\r\n // set modal content exposed to accessibility tree\r\n $('.js-close-menu').attr('tabindex', '0');\r\n $('.js-menu-item').attr('tabindex', '0');\r\n trapKeyboardFocus('#js-side-modal');\r\n\r\n } else {\r\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'false');\r\n\r\n $sideMenu.attr('aria-hidden', 'true');\r\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'true');\r\n $sideMenu.find('a').attr('tabindex', '-1').attr('aria-hidden', 'true');\r\n $('.js-close-menu').attr('tabindex', '-1');\r\n $('.js-menu-item').attr('tabindex', '-1');\r\n $('.js-accessible-logo').find('a').focus();\r\n }\r\n});\r\n// endregion\r\n\r\n\r\n// region Modal Window Panel Collapse\r\n$(document).on('hide.bs.collapse', '.collapse', function () {\r\n $('.accordion-button-icon').removeClass('minus').addClass('plus');\r\n}).on('show.bs.collapse', function () {\r\n $('.accordion-button-icon').removeClass('plus').addClass('minus');\r\n});\r\n\r\n$(document).on('show.bs.modal', '.modal', function () {\r\n $('.modal .modal-body').css({'overflow-y': 'auto', 'max-height': $(window).height() * 0.7});\r\n});\r\n// endregion\r\n\r\n// region Range Slider\r\nif ($('.js-input-slider').length > 0) {\r\n $(document).on('input', '.js-input-slider', function () {\r\n let self = $(this);\r\n let max = parseInt(self.attr('max'), 10);\r\n let totalValue = 0;\r\n let othersValue = 0;\r\n\r\n $('.js-input-slider').each(function () {\r\n totalValue += parseInt($(this).val(), 10);\r\n if ($(this).attr('name') !== self.attr('name')) {\r\n othersValue += parseInt($(this).val(), 10);\r\n }\r\n });\r\n\r\n let currentValue = parseInt(self.val(), 10);\r\n if (totalValue > max) {\r\n currentValue = max - othersValue;\r\n self.val(currentValue)\r\n }\r\n\r\n let $output = $(this).closest('.slider').find('output');\r\n\r\n $output.val('£' + currentValue)\r\n });\r\n}\r\n// endregion\r\n\r\n// change the state of switch checkbox in banner on press enter, left or right\r\n$(document).on('keydown', '#analytics', function(e) {\r\n console.log('key code first ' + e.keyCode, e.which);\r\n // trigger click on enter or arrow left/right\r\n if((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39 ){\r\n $(this).trigger('click');\r\n console.log('key code second '+ e.keyCode);\r\n let state = $(this).attr('aria-checked');\r\n let isState = (state === 'true');\r\n $(this).attr('aria-checked', !isState)\r\n }\r\n});\r\n\r\n$(function () {\r\n // region Scroll to Errors\r\n let $elementError = $('.form-group.has-error:first');\r\n if ($elementError.length > 0) {\r\n // scroll to error\r\n $('html, body').animate({\r\n scrollTop: $elementError.offset().top\r\n }, 100);\r\n }\r\n // endregion\r\n\r\n // region Scroll to message if on mobile\r\n if (window.mobileCheck()) {\r\n let $elementMessage = $('.alert');\r\n if ($elementMessage.length > 0) {\r\n $('html, body').animate({\r\n scrollTop: $elementMessage.offset().top\r\n }, 100);\r\n }\r\n }\r\n // endregion\r\n\r\n // region Date Picker\r\n let $datePickers = $('.date_picker');\r\n if ($datePickers.length > 0) {\r\n $datePickers.datepicker({\r\n format: \"dd-mm-yyyy\",\r\n todayHighlight: true,\r\n orientation: \"bottom auto\",\r\n autoclose: true\r\n });\r\n }\r\n // endregion\r\n\r\n Inputmask().mask($(\"input[data-inputmask]\"));\r\n});\r\n\r\n// region Message Scroll\r\nlet $chatArea = $('.js-messages');\r\n\r\n$(document).ready(function () {\r\n $chatArea.scrollTop($chatArea.prop('scrollHeight'));\r\n});\r\n// endregion\r\n\r\n// region Account JS\r\n$('.container.raf').on('click', '.js-social-whatsapp', function (event) {\r\n event.preventDefault();\r\n\r\n $('.js-social-form').attr('data-href', ($(this).attr('href'))).removeClass('hide');\r\n}).on('submit', '.js-social-form', function (event) {\r\n event.preventDefault();\r\n\r\n let url = $(this).attr('data-href');\r\n url = url.replace('[FRIENDS NUMBER]', $(this).find('input').val());\r\n\r\n window.open(url, '_blank');\r\n});\r\n// endregion\r\n\r\n// region Accordion Fix\r\n// $(document).on('click', '.simple-accordion .collapse-label', function (event) {\r\n// event.stopPropagation();\r\n// let $this = $(this);\r\n// let href;\r\n//\r\n// let parent = $this.data('parent');\r\n// let actives = parent && $(parent).find('.collapse.in');\r\n//\r\n// if (actives && actives.length) {\r\n// actives.collapse('hide');\r\n// }\r\n//\r\n// let target = $this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); //strip for ie7\r\n//\r\n// if ($(target).length > 0) {\r\n// $(target).collapse('toggle');\r\n// }\r\n// });\r\n\r\n$(document).ready(function () {\r\n if (window.location.hash !== '' && $(window.location.hash).length > 0) {\r\n $(window.location.hash).find('.collapse-label').trigger('click');\r\n }\r\n});\r\n// endregion\r\n\r\n// region Tabs\r\n$(document).on('click', '.tabs > li', function () {\r\n $('.tabs > li > a').removeClass('active');\r\n $(this).find('a').addClass('active');\r\n});\r\n// endregion\r\n\r\n// region Claim Form Gift Select\r\n$(document).on('change', 'input[name=\"gift\"]', function () {\r\n // region Address\r\n let $addressFields = $('.js-address-fields');\r\n\r\n let addressCheck = JSON.parse($addressFields.attr('data-check'));\r\n let requireAddress = addressCheck[$(this).val()] === '1';\r\n\r\n $addressFields.find('input.form-control.js-required')\r\n .attr('aria-required', requireAddress)\r\n .attr('required', requireAddress);\r\n $('input[name=\"ra\"]').val(requireAddress ? 1 : 0);\r\n\r\n requireAddress ? $addressFields.removeClass('hide') : $addressFields.addClass('hide');\r\n // endregion\r\n\r\n // region Bank Fields\r\n let $bankFields = $('.js-bank-fields');\r\n\r\n let bankCheck = JSON.parse($bankFields.attr('data-check'));\r\n let requireBank = bankCheck[$(this).val()] === '1';\r\n\r\n $bankFields.find('input.form-control.js-required')\r\n .attr('aria-required', requireBank)\r\n .attr('required', requireBank);\r\n $('input[name=\"ba\"]').val(requireBank ? 1 : 0);\r\n\r\n requireBank ? $bankFields.removeClass('hide') : $bankFields.addClass('hide');\r\n // endregion\r\n});\r\n// endregion\r\n\r\n// region Address Select\r\nif ($('.js-get-address-list').length > 0) {\r\n $(document).on('click', '.js-get-address-list', function (event) {\r\n event.preventDefault();\r\n\r\n let addressType = $(this).attr('data-type');\r\n\r\n let postcode = $('[name=\"address[' + addressType + '][postcode]\"]').val();\r\n\r\n if (postcode === '') {\r\n return;\r\n }\r\n\r\n let $addressListField = $('#address_list_' + addressType);\r\n\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n data: {postcode: postcode},\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n let option = $(' ')\r\n .val('')\r\n .attr('data-all', '')\r\n .html('Please Select');\r\n\r\n $addressListField.find('option').remove();\r\n $addressListField.append(option);\r\n $.each(response, function () {\r\n let display = this.address_1\r\n + (this.address_2 !== '' && this.address_2 !== null ? ', ' + this.address_2 : '')\r\n + ', ' + this.city_town;\r\n\r\n let option = $(' ')\r\n .val(this.id)\r\n .attr('data-all', JSON.stringify(this))\r\n .html(display);\r\n\r\n $addressListField.append(option);\r\n $addressListField.closest('.js-address-list').fadeIn();\r\n });\r\n\r\n $addressListField.prop('disabled', false);\r\n }\r\n });\r\n });\r\n\r\n $(document).on('change', '.js-address-select', function () {\r\n if ($(this).find('option:selected').attr('data-all') !== '') {\r\n let address = JSON.parse($(this).find('option:selected').attr('data-all'));\r\n\r\n let addressType = $(this).attr('data-type');\r\n\r\n $('[name=\"address[' + addressType + '][address_1]\"]').val(address.address_1);\r\n $('[name=\"address[' + addressType + '][address_2]\"]').val(address.address_2);\r\n $('[name=\"address[' + addressType + '][city_town]\"]').val(address.city_town);\r\n $('[name=\"address[' + addressType + '][county]\"]').val(address.county);\r\n $('[name=\"address[' + addressType + '][country]\"]').val(address.country);\r\n }\r\n });\r\n}\r\n// endregion\r\n\r\n// region Accessibility\r\nfunction validateEmail(email) {\r\n // noinspection RegExpRedundantEscape\r\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n}\r\n\r\nfunction validateFormField() {\r\n let $this = $(this);\r\n let value = $this.val().trim();\r\n let id = $this.attr('id');\r\n let isRequired = $this[0].hasAttribute('aria-required') && $this.attr('aria-required') === 'true';\r\n let $confirmation = $('#' + id.replace('_confirmation', ''));\r\n let $formGroup = $this.closest('.form-group');\r\n let $errorMessage = $formGroup.find('div[aria-live] p');\r\n\r\n let errorMessage = '';\r\n let isInvalid = false;\r\n\r\n if (isRequired && value === '') {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-required');\r\n } else if ($this.attr('type') === 'email' && !validateEmail(value)) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-email');\r\n } else if ($confirmation.length > 0 && $confirmation.val().trim() !== value) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-confirm');\r\n } else if ($this[0].hasAttribute('data-inputmask') && !Inputmask().mask('#' + id).isComplete()) {\r\n isInvalid = true;\r\n errorMessage = $('.js-accessible').attr('data-inputmask');\r\n }\r\n\r\n $this.attr('aria-invalid', isInvalid);\r\n\r\n if (isInvalid) {\r\n $formGroup.removeClass('has-success').addClass('has-error');\r\n } else {\r\n $formGroup.removeClass('has-error').addClass('has-success');\r\n }\r\n\r\n $errorMessage.text(errorMessage);\r\n}\r\n\r\n$(document).on('focusout', 'input:not([aria-disable=\"true\"])', validateFormField);\r\n$(document).on('focusout', 'select:not([aria-disable=\"true\"])', validateFormField);\r\n// endregion\r\n\r\n$('.claim-form').submit(function() {\r\n $(this).find('#claim-button').prop('disabled',true);\r\n});","$(document).ready(function () {\r\n let $cookieContainer = $('.js-cookie-modal-container');\r\n\r\n if ($cookieContainer.attr('data-can-open') === 'true') {\r\n $cookieContainer.addClass('open');\r\n $('body').addClass('open');\r\n trapKeyboardFocus('#js-cookie-banner-modal');\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-details', function (event) {\r\n event.preventDefault();\r\n\r\n let $cookieBarContainer = $('.js-cookie-sidebar');\r\n $cookieBarContainer.removeClass('hide');\r\n $('.js-cookie-modal-container').addClass('show-sidebar');\r\n $('.cookie-modal-overlay').css('z-index', 100);\r\n\r\n\r\n // when banner is triggered & open, trap focus within for keyboard users (accessibility)\r\n $cookieBarContainer.toggleClass('open');\r\n if ($cookieBarContainer.hasClass('open')) {\r\n\r\n $cookieBarContainer.removeAttr('aria-hidden');\r\n // set modal content exposed to accessibility tree\r\n $('.js-close-banner').attr('tabindex', '0').removeAttr('aria-hidden');\r\n $('.js-banner-item').attr('tabindex', '0').removeAttr('aria-hidden');\r\n trapKeyboardFocus('#js-cookie-banner-sidebar');\r\n } else {\r\n $cookieBarContainer.find('.js-banner-item').attr('tabindex', '-1').attr('aria-hidden', true);\r\n $cookieBarContainer.attr('aria-hidden', true);\r\n if (screen.width >= 768) {\r\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\r\n } else {\r\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\r\n }\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-details-close', function (event) {\r\n event.preventDefault();\r\n\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('show-sidebar');\r\n});\r\n\r\n$(document).on('click', '.js-cookie-sidebar-toggle', function (event) {\r\n event.preventDefault();\r\n\r\n let $this = $(this);\r\n\r\n let value = $this.attr('data-value');\r\n\r\n if (value === '0') {\r\n $this.removeClass('toggle-off');\r\n $this.addClass('toggle-on');\r\n $this.attr('data-value', 1);\r\n } else {\r\n $this.addClass('toggle-off');\r\n $this.removeClass('toggle-on');\r\n $this.attr('data-value', 0);\r\n }\r\n});\r\n\r\n$(document).on('click', '.cookie-sidebar-toggle', function () {\r\n let state = $(this).attr('aria-checked');\r\n let isState = (state === 'true');\r\n $(this).attr('aria-checked', !isState);\r\n $(this).attr('data-value', !isState ? 1 : 0);\r\n});\r\n\r\n// change the state of switch checkbox in sidebar on press enter, left or right\r\n$(document).on('keyup', '.cookie-sidebar-toggle', function (e) {\r\n if ((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39) {\r\n $(this).trigger('click');\r\n }\r\n});\r\n\r\n$(document).on('click', '.js-cookie-accept-all', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {all: 'true'},\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-cookie-save', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {\r\n strictly_necessary: $('.js-cookie-sidebar-toggle[data-category=\"strictly_necessary\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n first_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"first_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n third_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"third_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n functional: $('.js-cookie-sidebar-toggle[data-category=\"functional\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n targeting: $('.js-cookie-sidebar-toggle[data-category=\"targeting\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\r\n },\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-cookie-reject', function (event) {\r\n event.preventDefault();\r\n\r\n $.ajax({\r\n method: 'get',\r\n url: $('.js-cookie-url').attr('data-url'),\r\n dataType: 'json',\r\n data: {\r\n strictly_necessary: 'disabled',\r\n first_party_performance: 'disabled',\r\n third_party_performance: 'disabled',\r\n functional: 'disabled',\r\n targeting: 'disabled',\r\n },\r\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\r\n success: function () {\r\n $('.js-cookie-sidebar').addClass('hide');\r\n $('.js-cookie-modal-container').removeClass('open');\r\n $('body').removeClass('open');\r\n $('.js-accessible-logo').find('a').focus();\r\n },\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-toggle-cookie-banner', function (event) {\r\n event.preventDefault();\r\n $('.js-cookie-modal-container').addClass('open');\r\n\r\n if ($('.js-cookie-sidebar').hasClass(\"hide\")) {\r\n $('.cookie-modal-overlay').css('z-index', 90);\r\n }\r\n});\r\n\r\nfunction toggleActive(elem, button) {\r\n if (elem.classList.contains('active')) {\r\n elem.classList.remove('active');\r\n button.ariaExpanded = false;\r\n } else {\r\n elem.classList.add('active');\r\n button.ariaExpanded = true;\r\n }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n document.querySelectorAll('.ck-accordion-wrapper').forEach(elem => {\r\n let header = elem.querySelector('.ck-accordion-trigger');\r\n let chevron = elem.querySelector('.ck-accordion-header-chevron');\r\n let description = elem.querySelector('.ck-accordion-header-desc');\r\n let button = elem.querySelector('.ck-accordion-trigger');\r\n\r\n header.addEventListener('click', () => toggleActive(elem, button));\r\n chevron.addEventListener('click', () => toggleActive(elem, button));\r\n description.addEventListener('click', () => toggleActive(elem, button));\r\n });\r\n});\r\n","// In the BP this should be empty. Enter your custom JS here\r\n\r\nconst onlineItemsElement = document.getElementById('js-online-items')\r\n\r\nif (onlineItemsElement) {\r\n const onlineItemIds = onlineItemsElement.getAttribute('data-ids').split(',')\r\n /** @type HTMLFieldSetElement */\r\n const onlineFieldset = document.getElementById('online-details')\r\n /** @type HTMLFieldSetElement */\r\n const offlineFieldset = document.getElementById('offline-details')\r\n /** @type NodeListOf */\r\n const radioButtons = document.getElementsByName('item')\r\n\r\n /** @this HTMLInputElement */\r\n function onlineItemCheck() {\r\n console.log(onlineItemIds);\r\n if (onlineItemIds.includes(this.value)) {\r\n onlineFieldset.disabled = false\r\n offlineFieldset.disabled = true\r\n } else {\r\n onlineFieldset.disabled = true\r\n offlineFieldset.disabled = false\r\n }\r\n\r\n onlineFieldset.hidden = onlineFieldset.disabled\r\n offlineFieldset.hidden = offlineFieldset.disabled\r\n }\r\n\r\n for (let radioButton of radioButtons) {\r\n radioButton.addEventListener('click', onlineItemCheck)\r\n\r\n if (radioButton.checked) {\r\n radioButton.click();\r\n onlineItemCheck();\r\n }\r\n }\r\n}\r\n\r\n// region Donation select\r\n$(document).on('click', '.is_donating input', function () {\r\n let isDonating = $(this).val();\r\n let donationAmount = $('.donation_amount');\r\n\r\n if (isDonating == 'Yes') {\r\n donationAmount.removeClass('hide');\r\n donationAmount.find(\":input\").prop(\"disabled\", false).prop(\"required\", true);\r\n } else {\r\n donationAmount.addClass('hide');\r\n donationAmount.find(\":input\").prop(\"disabled\", true).prop(\"required\", false);\r\n }\r\n});","//from Node\r\nrequire('js.cookie');\r\nrequire('bootstrap-datepicker');\r\nrequire('swiper');\r\n\r\n//from local\r\nrequire('./radio');\r\nrequire('../common/password-strength');\r\nrequire('../common/countdown');\r\nrequire('./base');\r\nrequire('./swiper-setup');\r\nrequire('./taketime');\r\nrequire('./cookie-banner');\r\n\r\n// Enter the JS for your build here\r\nrequire('./custom');\r\n","let KEYCODE = {\r\n DOWN: 40,\r\n LEFT: 37,\r\n RIGHT: 39,\r\n SPACE: 32,\r\n UP: 38\r\n};\r\n\r\nwindow.addEventListener('load', function () {\r\n let radioButtons = document.querySelectorAll('[role=radio]');\r\n\r\n for (let i = 0; i < radioButtons.length; i++) {\r\n let rb = radioButtons[i];\r\n\r\n rb.addEventListener('click', clickRadioGroup);\r\n rb.addEventListener('keydown', keyDownRadioGroup);\r\n rb.addEventListener('focus', focusRadioButton);\r\n rb.addEventListener('blur', blurRadioButton);\r\n }\r\n});\r\n\r\nfunction firstRadioButton(node) {\r\n\r\n let first = node.parentNode.firstChild;\r\n\r\n while (first) {\r\n if (first.nodeType === Node.ELEMENT_NODE) {\r\n if (first.getAttribute(\"role\") === 'radio') return first;\r\n }\r\n first = first.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction lastRadioButton(node) {\r\n let last = node.parentNode.lastChild;\r\n\r\n while (last) {\r\n if (last.nodeType === Node.ELEMENT_NODE) {\r\n if (last.getAttribute(\"role\") === 'radio') return last;\r\n }\r\n last = last.previousSibling;\r\n }\r\n\r\n return last;\r\n}\r\n\r\nfunction nextRadioButton(node) {\r\n let next = node.nextSibling;\r\n\r\n while (next) {\r\n if (next.nodeType === Node.ELEMENT_NODE) {\r\n if (next.getAttribute(\"role\") === 'radio') return next;\r\n }\r\n next = next.nextSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction previousRadioButton(node) {\r\n\r\n let prev = node.previousSibling;\r\n\r\n while (prev) {\r\n if (prev.nodeType === Node.ELEMENT_NODE) {\r\n if (prev.getAttribute(\"role\") === 'radio') return prev;\r\n }\r\n prev = prev.previousSibling;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction setRadioButton(node, state) {\r\n if (state === 'true') {\r\n node.tabIndex = 0;\r\n node.setAttribute('aria-checked', 'true');\r\n node.focus();\r\n $(node).find('input').trigger('click');\r\n $(node).find('input').attr('checked', 'checked');\r\n } else {\r\n node.setAttribute('aria-checked', 'false');\r\n $(node).find('input').attr('checked', false);\r\n node.tabIndex = -1;\r\n }\r\n}\r\n\r\nfunction clickRadioGroup(event) {\r\n let type = event.type;\r\n\r\n if (type === 'click') {\r\n // If either enter or space is pressed, execute the funtion\r\n\r\n let node = event.currentTarget;\r\n\r\n let radioButton = firstRadioButton(node);\r\n\r\n while (radioButton) {\r\n setRadioButton(radioButton, \"false\");\r\n radioButton = nextRadioButton(radioButton);\r\n }\r\n\r\n setRadioButton(node, \"true\");\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\r\n\r\nfunction keyDownRadioGroup(event) {\r\n let type = event.type;\r\n let next = false;\r\n\r\n if (type === \"keydown\") {\r\n let node = event.currentTarget;\r\n\r\n switch (event.keyCode) {\r\n case KEYCODE.DOWN:\r\n case KEYCODE.RIGHT:\r\n next = nextRadioButton(node);\r\n if (!next) next = firstRadioButton(node); //if node is the last node, node cycles to first.\r\n break;\r\n\r\n case KEYCODE.UP:\r\n case KEYCODE.LEFT:\r\n next = previousRadioButton(node);\r\n if (!next) next = lastRadioButton(node); //if node is the last node, node cycles to first.\r\n break;\r\n\r\n case KEYCODE.SPACE:\r\n next = node;\r\n break;\r\n }\r\n\r\n if (next) {\r\n let radioButton = firstRadioButton(node);\r\n\r\n while (radioButton) {\r\n setRadioButton(radioButton, \"false\");\r\n radioButton = nextRadioButton(radioButton);\r\n }\r\n\r\n setRadioButton(next, \"true\");\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\nfunction focusRadioButton(event) {\r\n event.currentTarget.className += ' focus';\r\n}\r\n\r\nfunction blurRadioButton(event) {\r\n event.currentTarget.className = event.currentTarget.className.replace(' focus', '');\r\n}\r\n","import Swiper from 'swiper';\r\n\r\nfunction generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function'){\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\nvar $swiperElements = $('.swiper-container');\r\nif($swiperElements.length > 0) {\r\n $swiperElements.each(function() {\r\n let uuid = generateUUID();\r\n let maxSlides = $(this)[0].hasAttribute('data-slides') ? parseInt($(this).attr('data-slides'), 10) : 4;\r\n $(this).attr('data-id', uuid);\r\n\r\n var swiper = new Swiper($(this)[0], {\r\n slidesPerView: maxSlides,\r\n spaceBetween: 15,\r\n autoHeight: true,\r\n loop: true,\r\n navigation: {\r\n nextEl: '[data-id=\"'+uuid+'\"] .swiper-button-next',\r\n prevEl: '[data-id=\"'+uuid+'\"] .swiper-button-prev'\r\n },\r\n breakpoints: {\r\n 1200: {\r\n slidesPerView: maxSlides,\r\n spaceBetween: 15\r\n },\r\n 1024: {\r\n slidesPerView: 4,\r\n spaceBetween: 15\r\n },\r\n 768: {\r\n slidesPerView: 3,\r\n spaceBetween: 15\r\n },\r\n 480: {\r\n slidesPerView: 2,\r\n spaceBetween: 15\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 15\r\n }\r\n }\r\n });\r\n\r\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-prev', function() {\r\n swiper.slidePrev();\r\n });\r\n\r\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-next', function() {\r\n swiper.slideNext();\r\n });\r\n });\r\n}\r\n\r\n$(document).ready(function() {\r\n $('.lazyload-bg').each(function() {\r\n var lazy = $(this);\r\n var src = lazy.attr('data-src');\r\n\r\n lazy.css('background-image', 'url(\"' + src + '\")');\r\n lazy.removeAttr('data-src');\r\n lazy.removeClass('lazyload-bg');\r\n });\r\n});\r\n","// region Offer Terms Modal Button\r\n$(document).on('click', '.js-offer-modal-btn', function (event) {\r\n event.preventDefault();\r\n\r\n let $this = $(this);\r\n let modalElement = $('.js-offer-modal');\r\n\r\n $.ajax({\r\n method: 'get',\r\n dataType: 'json',\r\n url: $this.attr('href'),\r\n success: function (response) {\r\n modalElement.html('');\r\n\r\n if (response.success) {\r\n modalElement.append(response.content);\r\n }\r\n\r\n modalElement.find('.modal').modal('show');\r\n }\r\n });\r\n});\r\n// endregion\r\n\r\nfunction setQueryStringParameter(name, value) {\r\n const params = new URLSearchParams(window.location.search);\r\n params.set(name, value);\r\n window.history.replaceState({}, \"\", decodeURIComponent(`${window.location.pathname}?${params}`));\r\n}\r\n\r\n/* region Select/Remove Filter */\r\n$(document).on('click', '.facets .js-toggle-filter, .js-search-page .js-toggle-filter, .js-search-page .js-remove-filter', function () {\r\n let url = $(this).attr('data-url');\r\n\r\n if (!$(this).hasClass('disabled')) {\r\n if (url) {\r\n window.location = url;\r\n }\r\n }\r\n});\r\n/* endregion */\r\n\r\n/* region Toggle Filter Children */\r\n$(document).on('click', '.has-children:not(.checkbox-container)', function () {\r\n $(this).toggleClass('active').next().slideToggle();\r\n});\r\n/* endregion */\r\n\r\n// region Sort Select\r\n$(document).on('change', 'select.sortBy', function () {\r\n let url = $(this).val();\r\n if (url) {\r\n window.location = url;\r\n }\r\n});\r\n// endregion\r\n\r\n// region Load More - Search Page\r\n$(document).on('click', '.js-load-more', function () {\r\n let $this = $(this);\r\n\r\n $('.loading-icon').show();\r\n\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n if (response.data) {\r\n $('.js-current-total').text(response.count);\r\n $this.attr('data-url', response.next_link)\r\n\r\n $('.loading-icon').hide();\r\n\r\n // region Remove focus\r\n $this.focus(function () {\r\n this.blur();\r\n });\r\n // endregion\r\n\r\n $('.js-list-results').append(response.data);\r\n\r\n // region Call lazyload again\r\n $('.lazyload-bg').each(function () {\r\n let lazy = $(this);\r\n let src = lazy.attr('data-src');\r\n lazy.css('background-image', 'url(\"' + src + '\")');\r\n lazy.removeAttr('data-src');\r\n lazy.removeClass('lazyload-bg');\r\n });\r\n // endregion\r\n\r\n setQueryStringParameter('page', response.current_page);\r\n\r\n if (response.next_link !== '') {\r\n $this.remove();\r\n }\r\n } else {\r\n $this.remove();\r\n }\r\n }\r\n });\r\n});\r\n// endregion\r\n\r\n// region Top search - suggestions dropdown\r\nlet f = -1;\r\nlet xhr;\r\n\r\n$(document).on('keyup paste', '.js-search-field', function (event) {\r\n if (event.keyCode === 40 || event.keyCode === 38 || event.keyCode === 13 || event.keyCode === 39 || event.keyCode === 37) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n let $form = $(this).closest('form');\r\n let suggestionList = $form.find('.js-suggestions-list');\r\n\r\n let searchTerm = $(this).val().replace('[^a-zA-Z0-9\\'\\s]', '');\r\n let searchType = $form.find('.search-type');\r\n\r\n if (xhr) {\r\n xhr.abort();\r\n }\r\n\r\n xhr = $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n data: {s: searchTerm},\r\n url: $(this).attr('data-url'),\r\n success: function (response) {\r\n if (response.data.length > 0) {\r\n let html = '';\r\n $(response.data).each(function () {\r\n html += this.list_html;\r\n });\r\n suggestionList.html(html);\r\n suggestionList.addClass('active').show();\r\n } else {\r\n suggestionList.removeClass('active').html('').hide();\r\n f = -1;\r\n }\r\n\r\n searchType.val(response.type);\r\n\r\n // Postcode\r\n if (response.type === 'postcode' && response.coordinates.lat && response.coordinates.lng) {\r\n $('input[name=\"coordinates\"]').val(response.coordinates.lat + ',' + response.coordinates.lng);\r\n }\r\n }\r\n });\r\n\r\n})\r\n .on('keydown', '.js-search-field', function (e) {\r\n let $form = $(this).closest('form');\r\n let suggestionList = $form.find('.js-suggestions-list');\r\n\r\n /*If the arrow DOWN key*/\r\n if (e.keyCode === 40) {\r\n f++;\r\n currentItem(suggestionList);\r\n } else if (e.keyCode === 38) {\r\n /*If the arrow UP key is pressed*/\r\n f--;\r\n currentItem(suggestionList);\r\n } else if (e.keyCode === 13) {\r\n /*If the ENTER key is pressed*/\r\n e.preventDefault();\r\n\r\n if (f > -1) {\r\n /*and simulate a click on the \"active\" item:*/\r\n suggestionList.find('.item.active').trigger('click');\r\n } else {\r\n $('.js-search-btn').trigger('click');\r\n }\r\n }\r\n });\r\n\r\n// Hide the auto complete box\r\n$(document).on('click', function () {\r\n let suggestionList = $('.js-suggestions-list');\r\n\r\n if (suggestionList.find('.item').length && suggestionList.hasClass('active')) {\r\n suggestionList.empty();\r\n f = -1;\r\n suggestionList.hide();\r\n }\r\n});\r\n\r\nfunction currentItem(element) {\r\n element.find('.item.active').removeClass('active');\r\n let t = element.find('.item').length;\r\n if (f >= t) {\r\n f = 0;\r\n }\r\n\r\n if (f < 0) {\r\n f = (t - 1);\r\n }\r\n\r\n element.find('.item').eq(f).addClass('active').focus();\r\n}\r\n\r\nfunction menu_item_link(element) {\r\n window.location = $(element).attr('data-url');\r\n}\r\n\r\n$(document).on('click', '.item.active', function () {\r\n menu_item_link(this);\r\n});\r\n\r\n$(document).on('click', '.js-suggestions-list .item', function () {\r\n menu_item_link(this);\r\n});\r\n\r\n// endregion\r\n\r\n$(document).on('click', '.js-filters-modal', function () {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'json',\r\n url: $('.js-filters-modal-container').attr('data-url'),\r\n data: {route: $('.js-filters-modal-container').attr('data-route')},\r\n success: function (response) {\r\n $('.js-filters-modal-container').attr('data-url', response.facetUrl);\r\n $('body').addClass('modal-open');\r\n\r\n let $filterModalContainer = $('.js-filters-modal-container');\r\n $filterModalContainer.html(response.facet);\r\n $filterModalContainer.css({display: 'block', height: $(window).height()});\r\n }\r\n });\r\n});\r\n\r\n$(document).on('click', '.js-close-filter-modal', function (event) {\r\n event.preventDefault();\r\n\r\n $('body').removeClass('modal-open');\r\n\r\n let $filterModalContainer = $('.js-filters-modal-container');\r\n $filterModalContainer.html('');\r\n $filterModalContainer.css({display: 'none', height: $(window).height()});\r\n});\r\n\r\n// #########################################################\r\n\r\n// Element\r\nlet $localSearchMap = $('.local-search-map');\r\nlet $zeroAlert = $('.zero-alert');\r\nlet $redraw = $('#redraw');\r\n\r\n// Init Vars\r\nlet markers, bounds, infoWindow, map, lat, lng, coords;\r\n\r\nfunction initMap() {\r\n // from initial page load\r\n lat = parseFloat($('#local-search-map input[name=\"latitude\"]').val());\r\n lng = parseFloat($('#local-search-map input[name=\"longitude\"]').val());\r\n\r\n // make google maps friendly\r\n coords = {lat: lat, lng: lng};\r\n\r\n $zeroAlert.hide();\r\n\r\n if ($localSearchMap.length > 0) {\r\n bounds = new google.maps.LatLngBounds();\r\n infoWindow = new google.maps.InfoWindow();\r\n\r\n map = new google.maps.Map($localSearchMap[0], {\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n center: coords,\r\n zoom: 12,\r\n styles: [\r\n {\r\n featureType: \"poi\",\r\n elementType: \"labels\",\r\n stylers: [\r\n {\r\n visibility: \"off\"\r\n }\r\n ]\r\n }\r\n ]\r\n });\r\n\r\n if (\"geolocation\" in navigator) {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n let pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude\r\n };\r\n\r\n $('#local-search-map input[name=\"lat\"]').val(position.coords.latitude)\r\n $('#local-search-map input[name=\"lng\"]').val(position.coords.longitude)\r\n map.setCenter(pos);\r\n // submitRequest();\r\n }, showGeoError);\r\n }\r\n\r\n addSearchedMarker(coords);\r\n\r\n // region Event Listener\r\n google.maps.event.addListener(map, 'idle', function () {\r\n $('#sw-lat').val(map.getBounds().getSouthWest().lat());\r\n $('#sw-lng').val(map.getBounds().getSouthWest().lng());\r\n $('#ne-lat').val(map.getBounds().getNorthEast().lat());\r\n $('#ne-lng').val(map.getBounds().getNorthEast().lng());\r\n\r\n // some events do not require a reload of data (eg. infoWindow popup that moves the map)\r\n if (parseInt($redraw.val(), 10) === 1) {\r\n submitRequest();\r\n }\r\n\r\n // in case we set not to redraw last time around, set it back to true\r\n $redraw.val(1);\r\n });\r\n // endregion\r\n }\r\n}\r\n\r\nwindow.initMap = initMap;\r\n\r\n/**\r\n * This is the searched location that stays the same until another search is performed\r\n * @param {*} coords\r\n */\r\nfunction addSearchedMarker(coords) {\r\n let searched = new google.maps.Marker({\r\n position: coords\r\n });\r\n searched.setMap(map);\r\n}\r\n\r\nfunction setIconsOnTheMap(response) {\r\n if (markers !== undefined) {\r\n for (let i = 0; i < markers.length; i++) {\r\n markers[i].setMap(null);\r\n }\r\n }\r\n\r\n let locationsArray = response.locations;\r\n\r\n // region Sneaky call to show hide zero results alert\r\n if (locationsArray.length === 0) {\r\n $zeroAlert.show();\r\n } else {\r\n $zeroAlert.hide();\r\n }\r\n // endregion\r\n\r\n let coordinates;\r\n\r\n markers = locationsArray.map(function (location, i) {\r\n coordinates = {lat: parseFloat(location.latitude), lng: parseFloat(location.longitude)};\r\n\r\n let icon = {\r\n url: location.images.icon,\r\n scaledSize: new google.maps.Size(32, 32),\r\n origin: new google.maps.Point(0, 0),\r\n anchor: new google.maps.Point(16, 16)\r\n };\r\n\r\n let marker = new google.maps.Marker({position: coordinates, icon: icon});\r\n\r\n // region Click Event\r\n google.maps.event.addListener(marker, 'click', (function (marker) {\r\n return function () {\r\n infoWindow.setContent(location.block);\r\n infoWindow.open(map, marker);\r\n $('#redraw').val(0);\r\n }\r\n })(marker, i));\r\n // endregion\r\n\r\n return marker;\r\n });\r\n\r\n for (let l = 0; l < markers.length; l++) {\r\n markers[l].setMap(map);\r\n }\r\n\r\n $('.js-results-count').html(markers.length);\r\n}\r\n\r\n/**\r\n * used to get data from the server and update the map and filters\r\n */\r\nfunction submitRequest(url) {\r\n $('#loading-map').show();\r\n\r\n // region Build URL\r\n url = url === undefined ? $('.js-map-search').attr('data-url') : url;\r\n\r\n if (url.indexOf('lat') === -1) {\r\n if (url.indexOf('?') !== -1) {\r\n url += '&';\r\n } else {\r\n url += '?';\r\n }\r\n\r\n url += 'lat=' + $('input[name=\"latitude\"]').val();\r\n url += '&lng=' + $('input[name=\"longitude\"]').val();\r\n url += '&ne_lat=' + $('input[name=\"ne_latitude\"]').val();\r\n url += '&ne_lng=' + $('input[name=\"ne_longitude\"]').val();\r\n url += '&sw_lat=' + $('input[name=\"sw_latitude\"]').val();\r\n url += '&sw_lng=' + $('input[name=\"sw_longitude\"]').val();\r\n url += '&area=' + $('input[name=\"area\"]').val();\r\n }\r\n // endregion\r\n\r\n // region Make request to get map data\r\n $.ajax({\r\n method: 'get',\r\n url: url,\r\n dataType: 'json',\r\n headers: {\r\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\r\n 'Content-Type': 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n },\r\n success: function (response) {\r\n // update the map and icons\r\n setIconsOnTheMap(response);\r\n\r\n // update the side menu filters\r\n if(response.filterBar !== '') {\r\n $('#filter-items').html(response.filterBar);\r\n $('.filter-bar').removeClass('hide');\r\n }\r\n\r\n // take down the loading div\r\n $('#loading-map').hide();\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n // take down the loading div\r\n $('#loading-map').hide();\r\n }\r\n });\r\n // endregion\r\n}\r\n\r\n// TODO Show error and don't redirect\r\nfunction showGeoError(error, redirectTo) {\r\n redirectTo = redirectTo === undefined ? null : redirectTo;\r\n\r\n let x;\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n x = \"User denied the request for Geolocation.\";\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n x = \"Location information is unavailable.\";\r\n break;\r\n case error.TIMEOUT:\r\n x = \"The request to get user location timed out.\";\r\n break;\r\n case error.UNKNOWN_ERROR:\r\n x = \"An unknown error occurred.\";\r\n break;\r\n }\r\n // console.log(x);\r\n if (redirectTo === 'local-offers') {\r\n return window.location = localOffersUrl;\r\n }\r\n}\r\n\r\n$(document).on('click', '.js-local-search-map .js-toggle-filter, .js-local-search-map .js-remove-filter', function () {\r\n let url = $(this).attr('data-url');\r\n\r\n if (!$(this).hasClass('disabled')) {\r\n if (url) {\r\n $('.js-map-search').attr('data-url', url);\r\n\r\n submitRequest($(this).attr('data-url'));\r\n }\r\n }\r\n});\r\n","/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!Array.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += ''+dates[this.o.language].daysMin[(dowCnt++)%7]+' ';\n\t\t\t}\n\t\t\thtml += ' ';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + ' ';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + ' ';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +' ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + ' ');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push(' ');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\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\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ' '+\n\t\t\t ' '+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+' '+\n\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+' '+\n\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t' ',\n\t\tcontTemplate: ' ',\n\t\tfootTemplate: ''+\n\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\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};\n\tDPGlobal.template = ''+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t' '+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\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: '',\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: ''\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","// Use strict mode (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)\n\"use strict\";\n\n\n// Requires\nvar Typo = require(\"typo-js\");\n\n\n// Create function\nfunction CodeMirrorSpellChecker(options) {\n\t// Initialize\n\toptions = options || {};\n\n\n\t// Verify\n\tif(typeof options.codeMirrorInstance !== \"function\" || typeof options.codeMirrorInstance.defineMode !== \"function\") {\n\t\tconsole.log(\"CodeMirror Spell Checker: You must provide an instance of CodeMirror via the option `codeMirrorInstance`\");\n\t\treturn;\n\t}\n\n\n\t// Because some browsers don't support this functionality yet\n\tif(!String.prototype.includes) {\n\t\tString.prototype.includes = function() {\n\t\t\t\"use strict\";\n\t\t\treturn String.prototype.indexOf.apply(this, arguments) !== -1;\n\t\t};\n\t}\n\n\n\t// Define the new mode\n\toptions.codeMirrorInstance.defineMode(\"spell-checker\", function(config) {\n\t\t// Load AFF/DIC data\n\t\tif(!CodeMirrorSpellChecker.aff_loading) {\n\t\t\tCodeMirrorSpellChecker.aff_loading = true;\n\t\t\tvar xhr_aff = new XMLHttpRequest();\n\t\t\txhr_aff.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff\", true);\n\t\t\txhr_aff.onload = function() {\n\t\t\t\tif(xhr_aff.readyState === 4 && xhr_aff.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.aff_data = xhr_aff.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\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\txhr_aff.send(null);\n\t\t}\n\n\t\tif(!CodeMirrorSpellChecker.dic_loading) {\n\t\t\tCodeMirrorSpellChecker.dic_loading = true;\n\t\t\tvar xhr_dic = new XMLHttpRequest();\n\t\t\txhr_dic.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic\", true);\n\t\t\txhr_dic.onload = function() {\n\t\t\t\tif(xhr_dic.readyState === 4 && xhr_dic.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.dic_data = xhr_dic.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\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\txhr_dic.send(null);\n\t\t}\n\n\n\t\t// Define what separates a word\n\t\tvar rx_word = \"!\\\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~ \";\n\n\n\t\t// Create the overlay and such\n\t\tvar overlay = {\n\t\t\ttoken: function(stream) {\n\t\t\t\tvar ch = stream.peek();\n\t\t\t\tvar word = \"\";\n\n\t\t\t\tif(rx_word.includes(ch)) {\n\t\t\t\t\tstream.next();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\twhile((ch = stream.peek()) != null && !rx_word.includes(ch)) {\n\t\t\t\t\tword += ch;\n\t\t\t\t\tstream.next();\n\t\t\t\t}\n\n\t\t\t\tif(CodeMirrorSpellChecker.typo && !CodeMirrorSpellChecker.typo.check(word))\n\t\t\t\t\treturn \"spell-error\"; // CSS class: cm-spell-error\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tvar mode = options.codeMirrorInstance.getMode(\n\t\t\tconfig, config.backdrop || \"text/plain\"\n\t\t);\n\n\t\treturn options.codeMirrorInstance.overlayMode(mode, overlay, true);\n\t});\n}\n\n\n// Initialize data globally to reduce memory consumption\nCodeMirrorSpellChecker.num_loaded = 0;\nCodeMirrorSpellChecker.aff_loading = false;\nCodeMirrorSpellChecker.dic_loading = false;\nCodeMirrorSpellChecker.aff_data = \"\";\nCodeMirrorSpellChecker.dic_data = \"\";\nCodeMirrorSpellChecker.typo;\n\n\n// Export\nmodule.exports = CodeMirrorSpellChecker;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\n CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n\n // If we're not in Markdown mode, fall back to normal newlineAndIndent\n var eolState = cm.getStateAfter(pos.line);\n var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n if (inner.mode.name !== \"markdown\" && inner.mode.helperType !== \"markdown\") {\n cm.execCommand(\"newlineAndIndent\");\n return;\n } else {\n eolState = inner.state;\n }\n\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n\n var line = cm.getLine(pos.line), match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n cm.execCommand(\"newlineAndIndent\");\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line)\n var endOfList = !/>\\s*$/.test(line)\n if (endOfQuote || endOfList) cm.replaceRange(\"\", {\n line: pos.line, ch: 0\n }, {\n line: pos.line, ch: pos.ch + 1\n });\n replacements[i] = \"\\n\";\n } else {\n var indent = match[1], after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] : match[2].replace(\"x\", \" \");\n replacements[i] = \"\\n\" + indent + bullet + after;\n\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n };\n\n // Auto-updating Markdown list numbers when a new item is added to the\n // middle of a list\n function incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line, lookAhead = 0, skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = (parseInt(startItem[3], 10) + lookAhead - skipCount);\n var nextNumber = (parseInt(nextItem[3], 10)), itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber, ch: 0\n }, {\n line: nextLineNumber, ch: nextLine.length\n });\n } else {\n if (startIndent.length > nextIndent.length) return;\n // This doesn't run if the next line immediately indents, as it is\n // not clear of the users intention (new indented item or same level)\n if ((startIndent.length < nextIndent.length) && (lookAhead === 1)) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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 = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.16\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../markdown/markdown\"), require(\"../../addon/mode/overlay\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../markdown/markdown\", \"../../addon/mode/overlay\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n var codeDepth = 0;\n function blankLine(state) {\n state.code = false;\n return null;\n }\n var gfmOverlay = {\n startState: function() {\n return {\n code: false,\n codeBlock: false,\n ateSpace: false\n };\n },\n copyState: function(s) {\n return {\n code: s.code,\n codeBlock: s.codeBlock,\n ateSpace: s.ateSpace\n };\n },\n token: function(stream, state) {\n state.combineTokens = null;\n\n // Hack to prevent formatting override inside code blocks (block and inline)\n if (state.codeBlock) {\n if (stream.match(/^```+/)) {\n state.codeBlock = false;\n return null;\n }\n stream.skipToEnd();\n return null;\n }\n if (stream.sol()) {\n state.code = false;\n }\n if (stream.sol() && stream.match(/^```+/)) {\n stream.skipToEnd();\n state.codeBlock = true;\n return null;\n }\n // If this block is changed, it may need to be updated in Markdown mode\n if (stream.peek() === '`') {\n stream.next();\n var before = stream.pos;\n stream.eatWhile('`');\n var difference = 1 + stream.pos - before;\n if (!state.code) {\n codeDepth = difference;\n state.code = true;\n } else {\n if (difference === codeDepth) { // Must be exact\n state.code = false;\n }\n }\n return null;\n } else if (state.code) {\n stream.next();\n return null;\n }\n // Check if space. If so, links can be formatted later on\n if (stream.eatSpace()) {\n state.ateSpace = true;\n return null;\n }\n if (stream.sol() || state.ateSpace) {\n state.ateSpace = false;\n if (modeConfig.gitHubSpice !== false) {\n if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n // User/Project@SHA\n // User@SHA\n // SHA\n state.combineTokens = true;\n return \"link\";\n } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n // User/Project#Num\n // User#Num\n // #Num\n state.combineTokens = true;\n return \"link\";\n }\n }\n }\n if (stream.match(urlRE) &&\n stream.string.slice(stream.start - 2, stream.start) != \"](\" &&\n (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n // URLs\n // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL\n state.combineTokens = true;\n return \"link\";\n }\n stream.next();\n return null;\n },\n blankLine: blankLine\n };\n\n var markdownConfig = {\n taskLists: true,\n strikethrough: true,\n emoji: true\n };\n for (var attr in modeConfig) {\n markdownConfig[attr] = modeConfig[attr];\n }\n markdownConfig.name = \"markdown\";\n return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n\n}, \"markdown\");\n\n CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\"\n\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found) name = found.mime || found.mimes[0];\n }\n var mode = CodeMirror.getMode(cmCfg, name);\n return mode.name == \"null\" ? null : mode;\n }\n\n // Should characters that affect highlighting be highlighted separate?\n // Does not include characters that will be output (such as `1.` and `-` for lists)\n if (modeCfg.highlightFormatting === undefined)\n modeCfg.highlightFormatting = false;\n\n // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n // Excess `>` will emit `error` token.\n if (modeCfg.maxBlockquoteDepth === undefined)\n modeCfg.maxBlockquoteDepth = 0;\n\n // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n // Turn on strikethrough syntax\n if (modeCfg.strikethrough === undefined)\n modeCfg.strikethrough = false;\n\n if (modeCfg.emoji === undefined)\n modeCfg.emoji = false;\n\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\n modeCfg.fencedCodeBlockHighlighting = true;\n\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\n\n if (modeCfg.xml === undefined)\n modeCfg.xml = true;\n\n // Allow token types to be overridden by user-provided token types.\n if (modeCfg.tokenTypeOverrides === undefined)\n modeCfg.tokenTypeOverrides = {};\n\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n , listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n , taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n , setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/\n , textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n , fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/\n , linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n , punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n , expandedTab = \" \" // CommonMark specifies tab as 4 spaces\n\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string)\n }\n\n // Blocks\n\n function blankLine(state) {\n // Reset linkTitle state\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false;\n // Reset EM state\n state.em = false;\n // Reset STRONG state\n state.strong = false;\n // Reset strikethrough state\n state.strikethrough = false;\n // Reset state.quote\n state.quote = 0;\n // Reset state.indentedCode\n state.indentedCode = false;\n if (state.f == htmlBlock) {\n var exit = htmlModeMissing\n if (!exit) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n exit = inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)\n }\n if (exit) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n // Mark this line as blank\n state.prevLine = state.thisLine\n state.thisLine = {stream: null}\n return null;\n }\n\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n state.indentedCode = false;\n\n var lineIndentation = state.indentation;\n // compute once per line (on first token)\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n if (prevLineIsList) {\n state.list = null;\n // While this list item's marker's indentation is less than the deepest\n // list item's content's indentation,pop the deepest list item\n // indentation off the stack, and update block indentation state\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1];\n // less than the first list's indent -> the line is no longer a list\n } else {\n state.list = false;\n }\n }\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n }\n }\n }\n\n // not comprehensive (currently only for setext detection purposes)\n var allowsInlineContinuation = (\n !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n (!prevLineIsList || !prevLineIsIndentedCode) &&\n !state.prevLine.fencedCodeEnd\n );\n\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n var match = null;\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0;\n\n // Add this list item's content's indentation to the stack\n state.listStack.push(state.indentation);\n // Reset inline styles which shouldn't propagate across list items\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n state.f = state.inline;\n if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n // try switching mode\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );\n if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n state.code = -1\n return getType(state);\n // SETEXT has lowest block-scope precedence after HR, so check it after\n // the others (code, blockquote, list...)\n } else if (\n // if setext set, indicates line after ---/===\n state.setext || (\n // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n !state.code && !isHr && !linkDefRE.test(stream.string) &&\n (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n )\n ) {\n if ( !state.setext ) {\n state.header = match[0].charAt(0) == '=' ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext;\n // has no effect on type so we can reset it now\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n }\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === '[') {\n return switchInline(stream, state, footnoteLink);\n }\n\n return switchInline(stream, state, state.inline);\n }\n\n function htmlBlock(stream, state) {\n var style = htmlMode.token(stream, state.htmlState);\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)) ||\n (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n return style;\n }\n\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList) returnType = getType(state)\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList) return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n }\n\n // Inline\n function getType(state) {\n var styles = [];\n\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n\n if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n }\n\n // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n // Add `error` instead if the maximum blockquote nesting depth is passed\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(' ') : null;\n }\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else { // Only apply inline styles to non-url text\n if (state.strong) { styles.push(tokenTypes.strong); }\n if (state.em) { styles.push(tokenTypes.em); }\n if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n if (state.emoji) { styles.push(tokenTypes.emoji); }\n if (state.linkText) { styles.push(tokenTypes.linkText); }\n if (state.code) { styles.push(tokenTypes.code); }\n if (state.image) { styles.push(tokenTypes.image); }\n if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n }\n\n if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n if (state.quote) {\n styles.push(tokenTypes.quote);\n\n // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n\n return styles.length ? styles.join(' ') : null;\n }\n\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n return undefined;\n }\n\n function inlineNormal(stream, state) {\n var style = state.text(stream, state);\n if (typeof style !== 'undefined')\n return style;\n\n if (state.list) { // List marker (*, +, -, 1., etc)\n state.list = null;\n return getType(state);\n }\n\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen) state.taskOpen = true;\n else state.taskClosed = true;\n if (modeCfg.highlightFormatting) state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n\n state.taskOpen = false;\n state.taskClosed = false;\n\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n return getType(state);\n }\n\n var ch = stream.next();\n\n // Matches link titles present on next line\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n if (ch === '(') {\n matchCh = ')';\n }\n matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n }\n\n // If this block is changed, it may need to be updated in GFM mode\n if (ch === '`') {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting) state.formatting = \"code\";\n stream.eatWhile('`');\n var count = stream.current().length\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count\n return getType(state)\n } else if (count == state.code) { // Must be exact\n var t = getType(state)\n state.code = 0\n return t\n } else {\n state.formatting = previousFormatting\n return getType(state)\n }\n } else if (state.code) {\n return getType(state);\n }\n\n if (ch === '\\\\') {\n stream.next();\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n\n if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === ']' && state.imageAltText) {\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n\n if (ch === '[' && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/)) return getType(state)\n state.linkText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n return getType(state);\n }\n\n if (ch === ']' && state.linkText) {\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n return type;\n }\n\n if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkEmail;\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n }\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n while (len < 3 && stream.eat(ch)) len++\n var after = stream.peek() || \" \"\n // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n var setEm = null, setStrong = null\n if (len % 2) { // Em\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setEm = true\n else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setEm = false\n }\n if (len > 1) { // Strong\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setStrong = true\n else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setStrong = false\n }\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n if (setEm === true) state.em = ch\n if (setStrong === true) state.strong = ch\n var t = getType(state)\n if (setEm === false) state.em = false\n if (setStrong === false) state.strong = false\n return t\n }\n } else if (ch === ' ') {\n if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(1);\n }\n }\n }\n\n if (modeCfg.strikethrough) {\n if (ch === '~' && stream.eatWhile(ch)) {\n if (state.strikethrough) {// Remove strikethrough\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n state.strikethrough = true;\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === ' ') {\n if (stream.match('~~', true)) { // Probably surrounded by space\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(2);\n }\n }\n }\n }\n\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n\n if (ch === ' ') {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n\n return getType(state);\n }\n\n function linkInline(stream, state) {\n var ch = stream.next();\n\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n stream.match(/^[^>]+/, true);\n\n return tokenTypes.linkInline;\n }\n\n function linkHref(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n var ch = stream.next();\n if (ch === '(' || ch === '[') {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n return 'error';\n }\n\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n }\n\n function getLinkHrefInside(endChar) {\n return function(stream, state) {\n var ch = stream.next();\n\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n\n stream.match(linkRE[endChar])\n state.linkHref = true;\n return getType(state);\n };\n }\n\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next(); // Consume [\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n return switchInline(stream, state, inlineNormal);\n }\n\n function footnoteLinkInside(stream, state) {\n if (stream.match(']:', true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n return tokenTypes.linkText;\n }\n\n function footnoteUrl(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n // Match URL\n stream.match(/^[^\\s]+/, true);\n // Check for link title\n if (stream.peek() === undefined) { // End of line, set flag to check next line\n state.linkTitle = true;\n } else { // More content on line, check if link title\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n }\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n\n var mode = {\n startState: function() {\n return {\n f: blockNormal,\n\n prevLine: {stream: null},\n thisLine: {stream: null},\n\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n\n inline: inlineNormal,\n text: handleText,\n\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n\n copyState: function(s) {\n return {\n f: s.f,\n\n prevLine: s.prevLine,\n thisLine: s.thisLine,\n\n block: s.block,\n htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n indentation: s.indentation,\n\n localMode: s.localMode,\n localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n inline: s.inline,\n text: s.text,\n formatting: false,\n linkText: s.linkText,\n linkTitle: s.linkTitle,\n linkHref: s.linkHref,\n code: s.code,\n em: s.em,\n strong: s.strong,\n strikethrough: s.strikethrough,\n emoji: s.emoji,\n header: s.header,\n setext: s.setext,\n hr: s.hr,\n taskList: s.taskList,\n list: s.list,\n listStack: s.listStack.slice(0),\n quote: s.quote,\n indentedCode: s.indentedCode,\n trailingSpace: s.trailingSpace,\n trailingSpaceNewLine: s.trailingSpaceNewLine,\n md_inside: s.md_inside,\n fencedEndRE: s.fencedEndRE\n };\n },\n\n token: function(stream, state) {\n\n // Reset state.formatting\n state.formatting = false;\n\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n\n if (stream.match(/^\\s*$/, true)) {\n blankLine(state);\n return null;\n }\n\n state.prevLine = state.thisLine\n state.thisLine = {stream: stream}\n\n // Reset state.taskList\n state.taskList = false;\n\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n\n if (!state.localState) {\n state.f = state.block;\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0) return null;\n }\n }\n }\n return state.f(stream, state);\n },\n\n innerMode: function(state) {\n if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n if (state.localState) return {state: state.localState, mode: state.localMode};\n return {state: state, mode: mode};\n },\n\n indent: function(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n return CodeMirror.Pass\n },\n\n blankLine: blankLine,\n\n getType: getType,\n\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.modeInfo = [\n {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"asc\", \"pgp\", \"sig\"]},\n {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\", \"ino\"]},\n {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\", \"cbl\"]},\n {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\", \"cs\"]},\n {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists\\.txt$/},\n {name: \"CoffeeScript\", mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"], mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n {name: \"Embedded JavaScript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n {name: \"Esper\", mime: \"text/x-esper\", mode: \"sql\"},\n {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\", \"f95\"]},\n {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history)\\.md$/i},\n {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"], alias: [\"xhtml\"]},\n {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n {name: \"Jinja2\", mime: \"text/jinja2\", mode: \"jinja2\", ext: [\"j2\", \"jinja\", \"jinja2\"]},\n {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"], alias: [\"jl\"]},\n {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\", \"wl\", \"wls\"]},\n {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n {name: \"NTriples\", mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n mode: \"ntriples\", ext: [\"nt\", \"nq\"]},\n {name: \"Objective-C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\"], alias: [\"objective-c\", \"objc\"]},\n {name: \"Objective-C++\", mime: \"text/x-objectivec++\", mode: \"clike\", ext: [\"mm\"], alias: [\"objective-c++\", \"objc++\"]},\n {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n {name: \"PHP\", mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"], mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]},\n {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n {name: \"PostgreSQL\", mime: \"text/x-pgsql\", mode: \"sql\"},\n {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n {name: \"Shell\", mimes: [\"text/x-sh\", \"application/x-sh\"], mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n {name: \"SML\", mime: \"text/x-sml\", mode: \"mllike\", ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]},\n {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\", \"tex\"], alias: [\"tex\"]},\n {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\", \"sv\", \"svh\"]},\n {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n {name: \"TiddlyWiki\", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]},\n {name: \"WebAssembly\", mime: \"text/webassembly\", mode: \"wast\", ext: [\"wat\", \"wast\"]},\n ];\n // Ensure all modes have a mime property for backwards compatibility\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mimes) info.mime = info.mimes[0];\n }\n\n CodeMirror.findModeByMIME = function(mime) {\n mime = mime.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mime == mime) return info;\n if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n if (info.mimes[j] == mime) return info;\n }\n if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n };\n\n CodeMirror.findModeByExtension = function(ext) {\n ext = ext.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.ext) for (var j = 0; j < info.ext.length; j++)\n if (info.ext[j] == ext) return info;\n }\n };\n\n CodeMirror.findModeByFileName = function(filename) {\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.file && info.file.test(filename)) return info;\n }\n var dot = filename.lastIndexOf(\".\");\n var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n if (ext) return CodeMirror.findModeByExtension(ext);\n };\n\n CodeMirror.findModeByName = function(name) {\n name = name.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.name.toLowerCase() == name) return info;\n if (info.alias) for (var j = 0; j < info.alias.length; j++)\n if (info.alias[j].toLowerCase() == name) return info;\n }\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2023 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.8\n */\n!function(e, t) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t(); else if (\"function\" == typeof define && define.amd) define([], t); else {\n var i = t();\n for (var n in i) (\"object\" == typeof exports ? exports : e)[n] = i[n];\n }\n}(\"undefined\" != typeof self ? self : this, (function() {\n return function() {\n \"use strict\";\n var e = {\n 8741: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var i = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n t.default = i;\n },\n 3976: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = i(2839), a = {\n _maxTestPos: 500,\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: function() {},\n onincomplete: function() {},\n oncleared: function() {},\n repeat: 0,\n greedy: !1,\n autoUnmask: !1,\n removeMaskOnSubmit: !1,\n clearMaskOnLostFocus: !0,\n insertMode: !0,\n insertModeVisual: !0,\n clearIncomplete: !1,\n alias: null,\n onKeyDown: function() {},\n onBeforeMask: null,\n onBeforePaste: function(e, t) {\n return \"function\" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: !0,\n showMaskOnHover: !0,\n onKeyValidation: function() {},\n skipOptionalPartCharacter: \" \",\n numericInput: !1,\n rightAlign: !1,\n undoOnEscape: !0,\n radixPoint: \"\",\n _radixDance: !1,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: !0,\n tabThrough: !1,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ n.keys.Backspace, n.keys.Tab, n.keys.Pause, n.keys.Escape, n.keys.PageUp, n.keys.PageDown, n.keys.End, n.keys.Home, n.keys.ArrowLeft, n.keys.ArrowUp, n.keys.ArrowRight, n.keys.ArrowDown, n.keys.Insert, n.keys.Delete, n.keys.ContextMenu, n.keys.F1, n.keys.F2, n.keys.F3, n.keys.F4, n.keys.F5, n.keys.F6, n.keys.F7, n.keys.F8, n.keys.F9, n.keys.F10, n.keys.F11, n.keys.F12, n.keys.Process, n.keys.Unidentified, n.keys.Shift, n.keys.Control, n.keys.Alt, n.keys.Tab, n.keys.AltGraph, n.keys.CapsLock ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: void 0,\n jitMasking: !1,\n nullable: !0,\n inputEventOnly: !1,\n noValuePatching: !1,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"text\",\n importDataAttributes: !0,\n shiftPositions: !0,\n usePrototypeDefinitions: !0,\n validationEventTimeOut: 3e3,\n substitutes: {}\n };\n t.default = a;\n },\n 7392: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n t.default = {\n 9: {\n validator: \"[0-9\\uff10-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff10-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n };\n },\n 253: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i) {\n if (void 0 === i) return e.__data ? e.__data[t] : null;\n e.__data = e.__data || {}, e.__data[t] = i;\n };\n },\n 3776: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.Event = void 0, t.off = function(e, t) {\n var i, n;\n f(this[0]) && e && (i = this[0].eventRegistry, n = this[0], e.split(\" \").forEach((function(e) {\n var a = l(e.split(\".\"), 2);\n (function(e, n) {\n var a, r, o = [];\n if (e.length > 0) if (void 0 === t) for (a = 0, r = i[e][n].length; a < r; a++) o.push({\n ev: e,\n namespace: n && n.length > 0 ? n : \"global\",\n handler: i[e][n][a]\n }); else o.push({\n ev: e,\n namespace: n && n.length > 0 ? n : \"global\",\n handler: t\n }); else if (n.length > 0) for (var s in i) for (var l in i[s]) if (l === n) if (void 0 === t) for (a = 0, \n r = i[s][l].length; a < r; a++) o.push({\n ev: s,\n namespace: l,\n handler: i[s][l][a]\n }); else o.push({\n ev: s,\n namespace: l,\n handler: t\n });\n return o;\n })(a[0], a[1]).forEach((function(e) {\n var t = e.ev, a = e.handler;\n !function(e, t, a) {\n if (e in i == 1) if (n.removeEventListener ? n.removeEventListener(e, a, !1) : n.detachEvent && n.detachEvent(\"on\".concat(e), a), \n \"global\" === t) for (var r in i[e]) i[e][r].splice(i[e][r].indexOf(a), 1); else i[e][t].splice(i[e][t].indexOf(a), 1);\n }(t, e.namespace, a);\n }));\n })));\n return this;\n }, t.on = function(e, t) {\n if (f(this[0])) {\n var i = this[0].eventRegistry, n = this[0];\n e.split(\" \").forEach((function(e) {\n var a = l(e.split(\".\"), 2), r = a[0], o = a[1];\n !function(e, a) {\n n.addEventListener ? n.addEventListener(e, t, !1) : n.attachEvent && n.attachEvent(\"on\".concat(e), t), \n i[e] = i[e] || {}, i[e][a] = i[e][a] || [], i[e][a].push(t);\n }(r, void 0 === o ? \"global\" : o);\n }));\n }\n return this;\n }, t.trigger = function(e) {\n var t = arguments;\n if (f(this[0])) for (var i = this[0].eventRegistry, n = this[0], r = \"string\" == typeof e ? e.split(\" \") : [ e.type ], s = 0; s < r.length; s++) {\n var l = r[s].split(\".\"), c = l[0], u = l[1] || \"global\";\n if (void 0 !== document && \"global\" === u) {\n var d, p = {\n bubbles: !0,\n cancelable: !0,\n composed: !0,\n detail: arguments[1]\n };\n if (document.createEvent) {\n try {\n if (\"input\" === c) p.inputType = \"insertText\", d = new InputEvent(c, p); else d = new CustomEvent(c, p);\n } catch (e) {\n (d = document.createEvent(\"CustomEvent\")).initCustomEvent(c, p.bubbles, p.cancelable, p.detail);\n }\n e.type && (0, a.default)(d, e), n.dispatchEvent(d);\n } else (d = document.createEventObject()).eventType = c, d.detail = arguments[1], \n e.type && (0, a.default)(d, e), n.fireEvent(\"on\" + d.eventType, d);\n } else if (void 0 !== i[c]) {\n arguments[0] = arguments[0].type ? arguments[0] : o.default.Event(arguments[0]), \n arguments[0].detail = arguments.slice(1);\n var h = i[c];\n (\"global\" === u ? Object.values(h).flat() : h[u]).forEach((function(e) {\n return e.apply(n, t);\n }));\n }\n }\n return this;\n };\n var n, a = u(i(600)), r = u(i(9380)), o = u(i(4963)), s = u(i(8741));\n function l(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return c(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);\n }(e, t) || function() {\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 c(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function u(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n function f(e) {\n return e instanceof Element;\n }\n t.Event = n, \"function\" == typeof r.default.CustomEvent ? t.Event = n = r.default.CustomEvent : s.default && (t.Event = n = function(e, t) {\n t = t || {\n bubbles: !1,\n cancelable: !1,\n composed: !0,\n detail: void 0\n };\n var i = document.createEvent(\"CustomEvent\");\n return i.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), i;\n }, n.prototype = r.default.Event.prototype);\n },\n 600: function(e, t) {\n function i(e) {\n return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, i(e);\n }\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function e() {\n var t, n, a, r, o, s, l = arguments[0] || {}, c = 1, u = arguments.length, f = !1;\n \"boolean\" == typeof l && (f = l, l = arguments[c] || {}, c++);\n \"object\" !== i(l) && \"function\" != typeof l && (l = {});\n for (;c < u; c++) if (null != (t = arguments[c])) for (n in t) a = l[n], l !== (r = t[n]) && (f && r && (\"[object Object]\" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, \n s = a && Array.isArray(a) ? a : []) : s = a && \"[object Object]\" === Object.prototype.toString.call(a) ? a : {}, \n l[n] = e(f, s, r)) : void 0 !== r && (l[n] = r));\n return l;\n };\n },\n 4963: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = s(i(600)), a = s(i(9380)), r = s(i(253)), o = i(3776);\n function s(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var l = a.default.document;\n function c(e) {\n return e instanceof c ? e : this instanceof c ? void (null != e && e !== a.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : l.querySelector(e), \n void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new c(e);\n }\n c.prototype = {\n on: o.on,\n off: o.off,\n trigger: o.trigger\n }, c.extend = n.default, c.data = r.default, c.Event = o.Event;\n var u = c;\n t.default = u;\n },\n 9845: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.mobile = t.iphone = t.ie = void 0;\n var n, a = (n = i(9380)) && n.__esModule ? n : {\n default: n\n };\n var r = a.default.navigator && a.default.navigator.userAgent || \"\", o = r.indexOf(\"MSIE \") > 0 || r.indexOf(\"Trident/\") > 0, s = navigator.userAgentData && navigator.userAgentData.mobile || a.default.navigator && a.default.navigator.maxTouchPoints || \"ontouchstart\" in a.default, l = /iphone/i.test(r);\n t.iphone = l, t.mobile = s, t.ie = o;\n },\n 7184: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e) {\n return e.replace(i, \"\\\\$1\");\n };\n var i = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n },\n 6030: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventHandlers = void 0;\n var n = i(8711), a = i(2839), r = i(9845), o = i(7215), s = i(7760), l = i(4713);\n function c(e, t) {\n var i = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (!i) {\n if (Array.isArray(e) || (i = function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return u(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return u(e, t);\n }(e)) || t && e && \"number\" == typeof e.length) {\n i && (e = i);\n var n = 0, a = function() {};\n return {\n s: a,\n n: function() {\n return n >= e.length ? {\n done: !0\n } : {\n done: !1,\n value: e[n++]\n };\n },\n e: function(e) {\n throw e;\n },\n f: a\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var r, o = !0, s = !1;\n return {\n s: function() {\n i = i.call(e);\n },\n n: function() {\n var e = i.next();\n return o = e.done, e;\n },\n e: function(e) {\n s = !0, r = e;\n },\n f: function() {\n try {\n o || null == i.return || i.return();\n } finally {\n if (s) throw r;\n }\n }\n };\n }\n function u(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n var f = {\n keyEvent: function(e, t, i, c, u) {\n var d = this.inputmask, p = d.opts, h = d.dependencyLib, v = d.maskset, m = this, g = h(m), y = e.key, k = n.caret.call(d, m), b = p.onKeyDown.call(this, e, n.getBuffer.call(d), k, p);\n if (void 0 !== b) return b;\n if (y === a.keys.Backspace || y === a.keys.Delete || r.iphone && y === a.keys.BACKSPACE_SAFARI || e.ctrlKey && y === a.keys.x && !(\"oncut\" in m)) e.preventDefault(), \n o.handleRemove.call(d, m, y, k), (0, s.writeBuffer)(m, n.getBuffer.call(d, !0), v.p, e, m.inputmask._valueGet() !== n.getBuffer.call(d).join(\"\")); else if (y === a.keys.End || y === a.keys.PageDown) {\n e.preventDefault();\n var x = n.seekNext.call(d, n.getLastValidPosition.call(d));\n n.caret.call(d, m, e.shiftKey ? k.begin : x, x, !0);\n } else y === a.keys.Home && !e.shiftKey || y === a.keys.PageUp ? (e.preventDefault(), \n n.caret.call(d, m, 0, e.shiftKey ? k.begin : 0, !0)) : p.undoOnEscape && y === a.keys.Escape && !0 !== e.altKey ? ((0, \n s.checkVal)(m, !0, !1, d.undoValue.split(\"\")), g.trigger(\"click\")) : y !== a.keys.Insert || e.shiftKey || e.ctrlKey || void 0 !== d.userOptions.insertMode ? !0 === p.tabThrough && y === a.keys.Tab ? !0 === e.shiftKey ? (k.end = n.seekPrevious.call(d, k.end, !0), \n !0 === l.getTest.call(d, k.end - 1).match.static && k.end--, k.begin = n.seekPrevious.call(d, k.end, !0), \n k.begin >= 0 && k.end > 0 && (e.preventDefault(), n.caret.call(d, m, k.begin, k.end))) : (k.begin = n.seekNext.call(d, k.begin, !0), \n k.end = n.seekNext.call(d, k.begin, !0), k.end < v.maskLength && k.end--, k.begin <= v.maskLength && (e.preventDefault(), \n n.caret.call(d, m, k.begin, k.end))) : e.shiftKey || p.insertModeVisual && !1 === p.insertMode && (y === a.keys.ArrowRight ? setTimeout((function() {\n var e = n.caret.call(d, m);\n n.caret.call(d, m, e.begin);\n }), 0) : y === a.keys.ArrowLeft && setTimeout((function() {\n var e = n.translatePosition.call(d, m.inputmask.caretPos.begin);\n n.translatePosition.call(d, m.inputmask.caretPos.end);\n d.isRTL ? n.caret.call(d, m, e + (e === v.maskLength ? 0 : 1)) : n.caret.call(d, m, e - (0 === e ? 0 : 1));\n }), 0)) : o.isSelection.call(d, k) ? p.insertMode = !p.insertMode : (p.insertMode = !p.insertMode, \n n.caret.call(d, m, k.begin, k.begin));\n return d.isComposing = y == a.keys.Process || y == a.keys.Unidentified, d.ignorable = p.ignorables.includes(y), \n f.keypressEvent.call(this, e, t, i, c, u);\n },\n keypressEvent: function(e, t, i, r, l) {\n var c = this.inputmask || this, u = c.opts, f = c.dependencyLib, d = c.maskset, p = c.el, h = f(p), v = e.key;\n if (!0 === t || e.ctrlKey && e.altKey || !(e.ctrlKey || e.metaKey || c.ignorable)) {\n if (v) {\n var m, g = t ? {\n begin: l,\n end: l\n } : n.caret.call(c, p);\n v = u.substitutes[v] || v, d.writeOutBuffer = !0;\n var y = o.isValid.call(c, g, v, r, void 0, void 0, void 0, t);\n if (!1 !== y && (n.resetMaskSet.call(c, !0), m = void 0 !== y.caret ? y.caret : n.seekNext.call(c, y.pos.begin ? y.pos.begin : y.pos), \n d.p = m), m = u.numericInput && void 0 === y.caret ? n.seekPrevious.call(c, m) : m, \n !1 !== i && (setTimeout((function() {\n u.onKeyValidation.call(p, v, y);\n }), 0), d.writeOutBuffer && !1 !== y)) {\n var k = n.getBuffer.call(c);\n (0, s.writeBuffer)(p, k, m, e, !0 !== t);\n }\n if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;\n }\n } else v === a.keys.Enter && c.undoValue !== c._valueGet(!0) && (c.undoValue = c._valueGet(!0), \n setTimeout((function() {\n h.trigger(\"change\");\n }), 0));\n },\n pasteEvent: function(e) {\n var t, i = this.inputmask, a = i.opts, r = i._valueGet(!0), o = n.caret.call(i, this);\n i.isRTL && (t = o.end, o.end = n.translatePosition.call(i, o.begin), o.begin = n.translatePosition.call(i, t));\n var l = r.substr(0, o.begin), u = r.substr(o.end, r.length);\n if (l == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(0, o.begin).join(\"\") && (l = \"\"), \n u == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(o.end).join(\"\") && (u = \"\"), \n window.clipboardData && window.clipboardData.getData) r = l + window.clipboardData.getData(\"Text\") + u; else {\n if (!e.clipboardData || !e.clipboardData.getData) return !0;\n r = l + e.clipboardData.getData(\"text/plain\") + u;\n }\n var f = r;\n if (i.isRTL) {\n f = f.split(\"\");\n var d, p = c(n.getBufferTemplate.call(i));\n try {\n for (p.s(); !(d = p.n()).done; ) {\n var h = d.value;\n f[0] === h && f.shift();\n }\n } catch (e) {\n p.e(e);\n } finally {\n p.f();\n }\n f = f.join(\"\");\n }\n if (\"function\" == typeof a.onBeforePaste) {\n if (!1 === (f = a.onBeforePaste.call(i, f, a))) return !1;\n f || (f = r);\n }\n (0, s.checkVal)(this, !0, !1, f.toString().split(\"\"), e), e.preventDefault();\n },\n inputFallBackEvent: function(e) {\n var t = this.inputmask, i = t.opts, o = t.dependencyLib;\n var c, u = this, d = u.inputmask._valueGet(!0), p = (t.isRTL ? n.getBuffer.call(t).slice().reverse() : n.getBuffer.call(t)).join(\"\"), h = n.caret.call(t, u, void 0, void 0, !0);\n if (p !== d) {\n if (c = function(e, a, r) {\n for (var o, s, c, u = e.substr(0, r.begin).split(\"\"), f = e.substr(r.begin).split(\"\"), d = a.substr(0, r.begin).split(\"\"), p = a.substr(r.begin).split(\"\"), h = u.length >= d.length ? u.length : d.length, v = f.length >= p.length ? f.length : p.length, m = \"\", g = [], y = \"~\"; u.length < h; ) u.push(y);\n for (;d.length < h; ) d.push(y);\n for (;f.length < v; ) f.unshift(y);\n for (;p.length < v; ) p.unshift(y);\n var k = u.concat(f), b = d.concat(p);\n for (s = 0, o = k.length; s < o; s++) switch (c = l.getPlaceholder.call(t, n.translatePosition.call(t, s)), \n m) {\n case \"insertText\":\n b[s - 1] === k[s] && r.begin == k.length - 1 && g.push(k[s]), s = o;\n break;\n\n case \"insertReplacementText\":\n case \"deleteContentBackward\":\n k[s] === y ? r.end++ : s = o;\n break;\n\n default:\n k[s] !== b[s] && (k[s + 1] !== y && k[s + 1] !== c && void 0 !== k[s + 1] || (b[s] !== c || b[s + 1] !== y) && b[s] !== y ? b[s + 1] === y && b[s] === k[s + 1] ? (m = \"insertText\", \n g.push(k[s]), r.begin--, r.end--) : k[s] !== c && k[s] !== y && (k[s + 1] === y || b[s] !== k[s] && b[s + 1] === k[s + 1]) ? (m = \"insertReplacementText\", \n g.push(k[s]), r.begin--) : k[s] === y ? (m = \"deleteContentBackward\", (n.isMask.call(t, n.translatePosition.call(t, s), !0) || b[s] === i.radixPoint) && r.end++) : s = o : (m = \"insertText\", \n g.push(k[s]), r.begin--, r.end--));\n }\n return {\n action: m,\n data: g,\n caret: r\n };\n }(d, p, h), (u.inputmask.shadowRoot || u.ownerDocument).activeElement !== u && u.focus(), \n (0, s.writeBuffer)(u, n.getBuffer.call(t)), n.caret.call(t, u, h.begin, h.end, !0), \n !r.mobile && t.skipNextInsert && \"insertText\" === e.inputType && \"insertText\" === c.action && t.isComposing) return !1;\n switch (\"insertCompositionText\" === e.inputType && \"insertText\" === c.action && t.isComposing ? t.skipNextInsert = !0 : t.skipNextInsert = !1, \n c.action) {\n case \"insertText\":\n case \"insertReplacementText\":\n c.data.forEach((function(e, i) {\n var n = new o.Event(\"keypress\");\n n.key = e, t.ignorable = !1, f.keypressEvent.call(u, n);\n })), setTimeout((function() {\n t.$el.trigger(\"keyup\");\n }), 0);\n break;\n\n case \"deleteContentBackward\":\n var v = new o.Event(\"keydown\");\n v.key = a.keys.Backspace, f.keyEvent.call(u, v);\n break;\n\n default:\n (0, s.applyInputValue)(u, d), n.caret.call(t, u, h.begin, h.end, !0);\n }\n e.preventDefault();\n }\n },\n setValueEvent: function(e) {\n var t = this.inputmask, i = this, a = e && e.detail ? e.detail[0] : arguments[1];\n void 0 === a && (a = i.inputmask._valueGet(!0)), (0, s.applyInputValue)(i, a), (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && n.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);\n },\n focusEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = null == t ? void 0 : t._valueGet();\n i.showMaskOnFocus && a !== n.getBuffer.call(t).join(\"\") && (0, s.writeBuffer)(this, n.getBuffer.call(t), n.seekNext.call(t, n.getLastValidPosition.call(t))), \n !0 !== i.positionCaretOnTab || !1 !== t.mouseEnter || o.isComplete.call(t, n.getBuffer.call(t)) && -1 !== n.getLastValidPosition.call(t) || f.clickEvent.apply(this, [ e, !0 ]), \n t.undoValue = null == t ? void 0 : t._valueGet(!0);\n },\n invalidEvent: function(e) {\n this.inputmask.validationEvent = !0;\n },\n mouseleaveEvent: function() {\n var e = this.inputmask, t = e.opts, i = this;\n e.mouseEnter = !1, t.clearMaskOnLostFocus && (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i && (0, \n s.HandleNativePlaceholder)(i, e.originalPlaceholder);\n },\n clickEvent: function(e, t) {\n var i = this.inputmask;\n i.clicked++;\n var a = this;\n if ((a.inputmask.shadowRoot || a.ownerDocument).activeElement === a) {\n var r = n.determineNewCaretPosition.call(i, n.caret.call(i, a), t);\n void 0 !== r && n.caret.call(i, a, r);\n }\n },\n cutEvent: function(e) {\n var t = this.inputmask, i = t.maskset, r = this, l = n.caret.call(t, r), c = t.isRTL ? n.getBuffer.call(t).slice(l.end, l.begin) : n.getBuffer.call(t).slice(l.begin, l.end), u = t.isRTL ? c.reverse().join(\"\") : c.join(\"\");\n window.navigator.clipboard ? window.navigator.clipboard.writeText(u) : window.clipboardData && window.clipboardData.getData && window.clipboardData.setData(\"Text\", u), \n o.handleRemove.call(t, r, a.keys.Delete, l), (0, s.writeBuffer)(r, n.getBuffer.call(t), i.p, e, t.undoValue !== t._valueGet(!0));\n },\n blurEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = t.dependencyLib;\n t.clicked = 0;\n var r = a(this), l = this;\n if (l.inputmask) {\n (0, s.HandleNativePlaceholder)(l, t.originalPlaceholder);\n var c = l.inputmask._valueGet(), u = n.getBuffer.call(t).slice();\n \"\" !== c && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && c === n.getBufferTemplate.call(t).join(\"\") ? u = [] : s.clearOptionalTail.call(t, u)), \n !1 === o.isComplete.call(t, u) && (setTimeout((function() {\n r.trigger(\"incomplete\");\n }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), \n (0, s.writeBuffer)(l, u, void 0, e)), t.undoValue !== t._valueGet(!0) && (t.undoValue = t._valueGet(!0), \n r.trigger(\"change\"));\n }\n },\n mouseenterEvent: function() {\n var e = this.inputmask, t = e.opts.showMaskOnHover, i = this;\n if (e.mouseEnter = !0, (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i) {\n var a = (e.isRTL ? n.getBufferTemplate.call(e).slice().reverse() : n.getBufferTemplate.call(e)).join(\"\");\n t && (0, s.HandleNativePlaceholder)(i, a);\n }\n },\n submitEvent: function() {\n var e = this.inputmask, t = e.opts;\n e.undoValue !== e._valueGet(!0) && e.$el.trigger(\"change\"), -1 === n.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === n.getBufferTemplate.call(e).join(\"\") && e._valueSet(\"\"), \n t.clearIncomplete && !1 === o.isComplete.call(e, n.getBuffer.call(e)) && e._valueSet(\"\"), \n t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {\n (0, s.writeBuffer)(e.el, n.getBuffer.call(e));\n }), 0));\n },\n resetEvent: function() {\n var e = this.inputmask;\n e.refreshValue = !0, setTimeout((function() {\n (0, s.applyInputValue)(e.el, e._valueGet(!0));\n }), 0);\n }\n };\n t.EventHandlers = f;\n },\n 9716: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventRuler = void 0;\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n }, r = i(2839), o = i(8711), s = i(7760);\n var l = {\n on: function(e, t, i) {\n var n = e.inputmask.dependencyLib, l = function(t) {\n t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);\n var l, c = this, u = c.inputmask, f = u ? u.opts : void 0;\n if (void 0 === u && \"FORM\" !== this.nodeName) {\n var d = n.data(c, \"_inputmask_opts\");\n n(c).off(), d && new a.default(d).mask(c);\n } else {\n if ([ \"submit\", \"reset\", \"setvalue\" ].includes(t.type) || \"FORM\" === this.nodeName || !(c.disabled || c.readOnly && !(\"keydown\" === t.type && t.ctrlKey && t.key === r.keys.c || !1 === f.tabThrough && t.key === r.keys.Tab))) {\n switch (t.type) {\n case \"input\":\n if (!0 === u.skipInputEvent) return u.skipInputEvent = !1, t.preventDefault();\n break;\n\n case \"click\":\n case \"focus\":\n return u.validationEvent ? (u.validationEvent = !1, e.blur(), (0, s.HandleNativePlaceholder)(e, (u.isRTL ? o.getBufferTemplate.call(u).slice().reverse() : o.getBufferTemplate.call(u)).join(\"\")), \n setTimeout((function() {\n e.focus();\n }), f.validationEventTimeOut), !1) : (l = arguments, void setTimeout((function() {\n e.inputmask && i.apply(c, l);\n }), 0));\n }\n var p = i.apply(c, arguments);\n return !1 === p && (t.preventDefault(), t.stopPropagation()), p;\n }\n t.preventDefault();\n }\n };\n [ \"submit\", \"reset\" ].includes(t) ? (l = l.bind(e), null !== e.form && n(e.form).on(t, l)) : n(e).on(t, l), \n e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(l);\n },\n off: function(e, t) {\n if (e.inputmask && e.inputmask.events) {\n var i = e.inputmask.dependencyLib, n = e.inputmask.events;\n for (var a in t && ((n = [])[t] = e.inputmask.events[t]), n) {\n for (var r = n[a]; r.length > 0; ) {\n var o = r.pop();\n [ \"submit\", \"reset\" ].includes(a) ? null !== e.form && i(e.form).off(a, o) : i(e).off(a, o);\n }\n delete e.inputmask.events[a];\n }\n }\n }\n };\n t.EventRuler = l;\n },\n 219: function(e, t, i) {\n var n = d(i(2394)), a = i(2839), r = d(i(7184)), o = i(8711), s = i(4713);\n function l(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return c(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);\n }(e, t) || function() {\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 c(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function u(e) {\n return u = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, u(e);\n }\n function f(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), \n Object.defineProperty(e, (a = n.key, r = void 0, r = function(e, t) {\n if (\"object\" !== u(e) || null === e) return e;\n var i = e[Symbol.toPrimitive];\n if (void 0 !== i) {\n var n = i.call(e, t || \"default\");\n if (\"object\" !== u(n)) return n;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === t ? String : Number)(e);\n }(a, \"string\"), \"symbol\" === u(r) ? r : String(r)), n);\n }\n var a, r;\n }\n function d(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var p = n.default.dependencyLib, h = function() {\n function e(t, i, n) {\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.mask = t, this.format = i, this.opts = n, this._date = new Date(1, 0, 1), \n this.initDateObject(t, this.opts);\n }\n var t, i, n;\n return t = e, (i = [ {\n key: \"date\",\n get: function() {\n return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts)), \n this._date;\n }\n }, {\n key: \"initDateObject\",\n value: function(e, t) {\n var i;\n for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {\n var n = new RegExp(\"\\\\d+$\").exec(i[0]), a = n ? i[0][0] + \"x\" : i[0], r = void 0;\n if (void 0 !== e) {\n if (n) {\n var o = P(t).lastIndex, s = E(i.index, t);\n P(t).lastIndex = o, r = e.slice(0, e.indexOf(s.nextMatch[0]));\n } else r = e.slice(0, g[a] && g[a][4] || a.length);\n e = e.slice(r.length);\n }\n Object.prototype.hasOwnProperty.call(g, a) && this.setValue(this, r, a, g[a][2], g[a][1]);\n }\n }\n }, {\n key: \"setValue\",\n value: function(e, t, i, n, a) {\n if (void 0 !== t && (e[n] = \"ampm\" === n ? t : t.replace(/[^0-9]/g, \"0\"), e[\"raw\" + n] = t.replace(/\\s/g, \"_\")), \n void 0 !== a) {\n var r = e[n];\n (\"day\" === n && 29 === parseInt(r) || \"month\" === n && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || \"\" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), \n \"day\" === n && (m = !0, 0 === parseInt(r) && (r = 1)), \"month\" === n && (m = !0), \n \"year\" === n && (m = !0, r.length < 4 && (r = M(r, 4, !0))), \"\" === r || isNaN(r) || a.call(e._date, r), \n \"ampm\" === n && a.call(e._date, r);\n }\n }\n }, {\n key: \"reset\",\n value: function() {\n this._date = new Date(1, 0, 1);\n }\n }, {\n key: \"reInit\",\n value: function() {\n this._date = void 0, this.date;\n }\n } ]) && f(t.prototype, i), n && f(t, n), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e;\n }(), v = (new Date).getFullYear(), m = !1, g = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return M(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return M(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return M(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return M(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return M(Date.prototype.getHours.call(this), 2);\n } ],\n hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return Date.prototype.getHours;\n } ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return M(Date.prototype.getHours.call(this), 2);\n } ],\n Hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return function() {\n return M(Date.prototype.getHours.call(this), e);\n };\n } ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return M(Date.prototype.getMinutes.call(this), 2);\n } ],\n s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return M(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return M(Date.prototype.getMilliseconds.call(this), 3);\n }, 3 ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return M(Date.prototype.getMilliseconds.call(this), 2);\n }, 2 ],\n t: [ \"[ap]\", k, \"ampm\", b, 1 ],\n tt: [ \"[ap]m\", k, \"ampm\", b, 2 ],\n T: [ \"[AP]\", k, \"ampm\", b, 1 ],\n TT: [ \"[AP]M\", k, \"ampm\", b, 2 ],\n Z: [ \".*\", void 0, \"Z\", function() {\n var e = this.toString().match(/\\((.+)\\)/)[1];\n e.includes(\" \") && (e = (e = e.replace(\"-\", \" \").toUpperCase()).split(\" \").map((function(e) {\n return l(e, 1)[0];\n })).join(\"\"));\n return e;\n } ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, y = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function k(e) {\n var t = this.getHours();\n e.toLowerCase().includes(\"p\") ? this.setHours(t + 12) : e.toLowerCase().includes(\"a\") && t >= 12 && this.setHours(t - 12);\n }\n function b() {\n var e = this.getHours();\n return (e = e || 12) >= 12 ? \"PM\" : \"AM\";\n }\n function x(e) {\n var t = new RegExp(\"\\\\d+$\").exec(e[0]);\n if (t && void 0 !== t[0]) {\n var i = g[e[0][0] + \"x\"].slice(\"\");\n return i[0] = i[0](t[0]), i[3] = i[3](t[0]), i;\n }\n if (g[e[0]]) return g[e[0]];\n }\n function P(e) {\n if (!e.tokenizer) {\n var t = [], i = [];\n for (var n in g) if (/\\.*x$/.test(n)) {\n var a = n[0] + \"\\\\d+\";\n -1 === i.indexOf(a) && i.push(a);\n } else -1 === t.indexOf(n[0]) && t.push(n[0]);\n e.tokenizer = \"(\" + (i.length > 0 ? i.join(\"|\") + \"|\" : \"\") + t.join(\"+|\") + \")+?|.\", \n e.tokenizer = new RegExp(e.tokenizer, \"g\");\n }\n return e.tokenizer;\n }\n function w(e, t, i) {\n if (!m) return !0;\n if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || \"29\" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || \"\" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;\n if (\"29\" == e.day) {\n var n = E(t.pos, i);\n if (\"yyyy\" === n.targetMatch[0] && t.pos - n.targetMatchIndex == 2) return t.remove = t.pos + 1, \n t;\n } else if (\"02\" == e.month && \"30\" == e.day && void 0 !== t.c) return e.day = \"03\", \n e.date.setDate(3), e.date.setMonth(1), t.insert = [ {\n pos: t.pos,\n c: \"0\"\n }, {\n pos: t.pos + 1,\n c: t.c\n } ], t.caret = o.seekNext.call(this, t.pos + 1), t;\n return !1;\n }\n function S(e, t, i, n) {\n var a, o, s = \"\";\n for (P(i).lastIndex = 0; a = P(i).exec(e); ) {\n if (void 0 === t) if (o = x(a)) s += \"(\" + o[0] + \")\"; else switch (a[0]) {\n case \"[\":\n s += \"(\";\n break;\n\n case \"]\":\n s += \")?\";\n break;\n\n default:\n s += (0, r.default)(a[0]);\n } else if (o = x(a)) if (!0 !== n && o[3]) s += o[3].call(t.date); else o[2] ? s += t[\"raw\" + o[2]] : s += a[0]; else s += a[0];\n }\n return s;\n }\n function M(e, t, i) {\n for (e = String(e), t = t || 2; e.length < t; ) e = i ? e + \"0\" : \"0\" + e;\n return e;\n }\n function _(e, t, i) {\n return \"string\" == typeof e ? new h(e, t, i) : e && \"object\" === u(e) && Object.prototype.hasOwnProperty.call(e, \"date\") ? e : void 0;\n }\n function O(e, t) {\n return S(t.inputFormat, {\n date: e\n }, t);\n }\n function E(e, t) {\n var i, n, a = 0, r = 0;\n for (P(t).lastIndex = 0; n = P(t).exec(t.inputFormat); ) {\n var o = new RegExp(\"\\\\d+$\").exec(n[0]);\n if ((a += r = o ? parseInt(o[0]) : n[0].length) >= e + 1) {\n i = n, n = P(t).exec(t.inputFormat);\n break;\n }\n }\n return {\n targetMatchIndex: a - r,\n nextMatch: n,\n targetMatch: i\n };\n }\n n.default.extendAliases({\n datetime: {\n mask: function(e) {\n return e.numericInput = !1, g.S = e.i18n.ordinalSuffix.join(\"|\"), e.inputFormat = y[e.inputFormat] || e.inputFormat, \n e.displayFormat = y[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = y[e.outputFormat] || e.outputFormat || e.inputFormat, \n e.placeholder = \"\" !== e.placeholder ? e.placeholder : e.inputFormat.replace(/[[\\]]/, \"\"), \n e.regex = S(e.inputFormat, void 0, e), e.min = _(e.min, e.inputFormat, e), e.max = _(e.max, e.inputFormat, e), \n null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: null,\n outputFormat: null,\n min: null,\n max: null,\n skipOptionalPartCharacter: \"\",\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n preValidation: function(e, t, i, n, a, r, o, s) {\n if (s) return !0;\n if (isNaN(i) && e[t] !== i) {\n var l = E(t, a);\n if (l.nextMatch && l.nextMatch[0] === i && l.targetMatch[0].length > 1) {\n var c = g[l.targetMatch[0]][0];\n if (new RegExp(c).test(\"0\" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = \"0\", \n {\n fuzzy: !0,\n buffer: e,\n refreshFromBuffer: {\n start: t - 1,\n end: t + 1\n },\n pos: t + 1\n };\n }\n }\n return !0;\n },\n postValidation: function(e, t, i, n, a, r, o, l) {\n var c, u;\n if (o) return !0;\n if (!1 === n && (((c = E(t + 1, a)).targetMatch && c.targetMatchIndex === t && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]] || (c = E(t + 2, a)).targetMatch && c.targetMatchIndex === t + 1 && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]]) && (u = g[c.targetMatch[0]][0]), \n void 0 !== u && (void 0 !== r.validPositions[t + 1] && new RegExp(u).test(i + \"0\") ? (e[t] = i, \n e[t + 1] = \"0\", n = {\n pos: t + 2,\n caret: t\n }) : new RegExp(u).test(\"0\" + i) && (e[t] = \"0\", e[t + 1] = i, n = {\n pos: t + 2\n })), !1 === n)) return n;\n if (n.fuzzy && (e = n.buffer, t = n.pos), (c = E(t, a)).targetMatch && c.targetMatch[0] && void 0 !== g[c.targetMatch[0]]) {\n var f = g[c.targetMatch[0]];\n u = f[0];\n var d = e.slice(c.targetMatchIndex, c.targetMatchIndex + c.targetMatch[0].length);\n if (!1 === new RegExp(u).test(d.join(\"\")) && 2 === c.targetMatch[0].length && r.validPositions[c.targetMatchIndex] && r.validPositions[c.targetMatchIndex + 1] && (r.validPositions[c.targetMatchIndex + 1].input = \"0\"), \n \"year\" == f[2]) for (var p = s.getMaskTemplate.call(this, !1, 1, void 0, !0), h = t + 1; h < e.length; h++) e[h] = p[h], \n delete r.validPositions[h];\n }\n var m = n, y = _(e.join(\"\"), a.inputFormat, a);\n return m && !isNaN(y.date.getTime()) && (a.prefillYear && (m = function(e, t, i) {\n if (e.year !== e.rawyear) {\n var n = v.toString(), a = e.rawyear.replace(/[^0-9]/g, \"\"), r = n.slice(0, a.length), o = n.slice(a.length);\n if (2 === a.length && a === r) {\n var s = new Date(v, e.month - 1, e.day);\n e.day == s.getDate() && (!i.max || i.max.date.getTime() >= s.getTime()) && (e.date.setFullYear(v), \n e.year = n, t.insert = [ {\n pos: t.pos + 1,\n c: o[0]\n }, {\n pos: t.pos + 2,\n c: o[1]\n } ]);\n }\n }\n return t;\n }(y, m, a)), m = function(e, t, i, n, a) {\n if (!t) return t;\n if (t && i.min && !isNaN(i.min.date.getTime())) {\n var r;\n for (e.reset(), P(i).lastIndex = 0; r = P(i).exec(i.inputFormat); ) {\n var o;\n if ((o = x(r)) && o[3]) {\n for (var s = o[1], l = e[o[2]], c = i.min[o[2]], u = i.max ? i.max[o[2]] : c, f = [], d = !1, p = 0; p < c.length; p++) void 0 !== n.validPositions[p + r.index] || d ? (f[p] = l[p], \n d = d || l[p] > c[p]) : (f[p] = c[p], \"year\" === o[2] && l.length - 1 == p && c != u && (f = (parseInt(f.join(\"\")) + 1).toString().split(\"\")), \n \"ampm\" === o[2] && c != u && i.min.date.getTime() > e.date.getTime() && (f[p] = u[p]));\n s.call(e._date, f.join(\"\"));\n }\n }\n t = i.min.date.getTime() <= e.date.getTime(), e.reInit();\n }\n return t && i.max && (isNaN(i.max.date.getTime()) || (t = i.max.date.getTime() >= e.date.getTime())), \n t;\n }(y, m = w.call(this, y, m, a), a, r)), void 0 !== t && m && n.pos !== t ? {\n buffer: S(a.inputFormat, y, a).split(\"\"),\n refreshFromBuffer: {\n start: t,\n end: n.pos\n },\n pos: n.caret || n.pos\n } : m;\n },\n onKeyDown: function(e, t, i, n) {\n e.ctrlKey && e.key === a.keys.ArrowRight && (this.inputmask._valueSet(O(new Date, n)), \n p(this).trigger(\"setvalue\"));\n },\n onUnMask: function(e, t, i) {\n return t ? S(i.outputFormat, _(e, i.inputFormat, i), i, !0) : t;\n },\n casing: function(e, t, i, n) {\n return 0 == t.nativeDef.indexOf(\"[ap]\") ? e.toLowerCase() : 0 == t.nativeDef.indexOf(\"[AP]\") ? e.toUpperCase() : e;\n },\n onBeforeMask: function(e, t) {\n return \"[object Date]\" === Object.prototype.toString.call(e) && (e = O(e, t)), e;\n },\n insertMode: !1,\n insertModeVisual: !1,\n shiftPositions: !1,\n keepStatic: !1,\n inputmode: \"numeric\",\n prefillYear: !0\n }\n });\n },\n 3851: function(e, t, i) {\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n }, r = i(8711), o = i(4713);\n a.default.extendDefinitions({\n A: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"&\": {\n validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"#\": {\n validator: \"[0-9A-Fa-f]\",\n casing: \"upper\"\n }\n });\n var s = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n function l(e, t, i, n, a) {\n return i - 1 > -1 && \".\" !== t.buffer[i - 1] ? (e = t.buffer[i - 1] + e, e = i - 2 > -1 && \".\" !== t.buffer[i - 2] ? t.buffer[i - 2] + e : \"0\" + e) : e = \"00\" + e, \n s.test(e);\n }\n a.default.extendAliases({\n cssunit: {\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n },\n url: {\n regex: \"(https?|ftp)://.*\",\n autoUnmask: !1,\n keepStatic: !1,\n tabThrough: !0\n },\n ip: {\n mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\n definitions: {\n i: {\n validator: l\n },\n j: {\n validator: l\n },\n k: {\n validator: l\n },\n l: {\n validator: l\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"decimal\",\n substitutes: {\n \",\": \".\"\n }\n },\n email: {\n mask: function(e) {\n var t = e.separator, i = e.quantifier, n = \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\", a = n;\n if (t) for (var r = 0; r < i; r++) a += \"[\".concat(t).concat(n, \"]\");\n return a;\n },\n greedy: !1,\n casing: \"lower\",\n separator: null,\n quantifier: 5,\n skipOptionalPartCharacter: \"\",\n onBeforePaste: function(e, t) {\n return (e = e.toLowerCase()).replace(\"mailto:\", \"\");\n },\n definitions: {\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n },\n \"-\": {\n validator: \"[0-9A-Za-z-]\"\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"email\"\n },\n mac: {\n mask: \"##:##:##:##:##:##\"\n },\n vin: {\n mask: \"V{13}9{4}\",\n definitions: {\n V: {\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n casing: \"upper\"\n }\n },\n clearIncomplete: !0,\n autoUnmask: !0\n },\n ssn: {\n mask: \"999-99-9999\",\n postValidation: function(e, t, i, n, a, s, l) {\n var c = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);\n return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(c.join(\"\"));\n }\n }\n });\n },\n 207: function(e, t, i) {\n var n = s(i(2394)), a = s(i(7184)), r = i(8711), o = i(2839);\n function s(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var l = n.default.dependencyLib;\n function c(e, t) {\n for (var i = \"\", a = 0; a < e.length; a++) n.default.prototype.definitions[e.charAt(a)] || t.definitions[e.charAt(a)] || t.optionalmarker[0] === e.charAt(a) || t.optionalmarker[1] === e.charAt(a) || t.quantifiermarker[0] === e.charAt(a) || t.quantifiermarker[1] === e.charAt(a) || t.groupmarker[0] === e.charAt(a) || t.groupmarker[1] === e.charAt(a) || t.alternatormarker === e.charAt(a) ? i += \"\\\\\" + e.charAt(a) : i += e.charAt(a);\n return i;\n }\n function u(e, t, i, n) {\n if (e.length > 0 && t > 0 && (!i.digitsOptional || n)) {\n var a = e.indexOf(i.radixPoint), r = !1;\n i.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === a && (e.push(i.radixPoint), \n a = e.length - 1);\n for (var o = 1; o <= t; o++) isFinite(e[a + o]) || (e[a + o] = \"0\");\n }\n return r && e.push(i.negationSymbol.back), e;\n }\n function f(e, t) {\n var i = 0;\n for (var n in \"+\" === e && (i = r.seekNext.call(this, t.validPositions.length - 1)), \n t.tests) if ((n = parseInt(n)) >= i) for (var a = 0, o = t.tests[n].length; a < o; a++) if ((void 0 === t.validPositions[n] || \"-\" === e) && t.tests[n][a].match.def === e) return n + (void 0 !== t.validPositions[n] && \"-\" !== e ? 1 : 0);\n return i;\n }\n function d(e, t) {\n for (var i = -1, n = 0, a = t.validPositions.length; n < a; n++) {\n var r = t.validPositions[n];\n if (r && r.match.def === e) {\n i = n;\n break;\n }\n }\n return i;\n }\n function p(e, t, i, n, a) {\n var r = t.buffer ? t.buffer.indexOf(a.radixPoint) : -1, o = (-1 !== r || n && a.jitMasking) && new RegExp(a.definitions[9].validator).test(e);\n return a._radixDance && -1 !== r && o && null == t.validPositions[r] ? {\n insert: {\n pos: r === i ? r + 1 : r,\n c: a.radixPoint\n },\n pos: i\n } : o;\n }\n n.default.extendAliases({\n numeric: {\n mask: function(e) {\n e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && \"0\" !== e.digits && (\".\" === e.radixPoint ? e.groupSeparator = \",\" : \",\" === e.radixPoint ? e.groupSeparator = \".\" : e.groupSeparator = \"\"), \n \" \" === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), \n \"radixFocus\" === e.positionCaretOnClick && \"\" === e.placeholder && (e.positionCaretOnClick = \"lvp\");\n var t = \"0\", i = e.radixPoint;\n !0 === e.numericInput && void 0 === e.__financeInput ? (t = \"1\", e.positionCaretOnClick = \"radixFocus\" === e.positionCaretOnClick ? \"lvp\" : e.positionCaretOnClick, \n e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, i = \",\" === e.radixPoint ? \"?\" : \"!\", \n \"\" !== e.radixPoint && void 0 === e.definitions[i] && (e.definitions[i] = {}, e.definitions[i].validator = \"[\" + e.radixPoint + \"]\", \n e.definitions[i].placeholder = e.radixPoint, e.definitions[i].static = !0, e.definitions[i].generated = !0)) : (e.__financeInput = !1, \n e.numericInput = !0);\n var n, r = \"[+]\";\n if (r += c(e.prefix, e), \"\" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, \n e.definitions[e.groupSeparator].validator = \"[\" + e.groupSeparator + \"]\", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, \n e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), \n r += e._mask(e)) : r += \"9{+}\", void 0 !== e.digits && 0 !== e.digits) {\n var o = e.digits.toString().split(\",\");\n isFinite(o[0]) && o[1] && isFinite(o[1]) ? r += i + t + \"{\" + e.digits + \"}\" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (n = r + i + t + \"{0,\" + e.digits + \"}\", \n e.keepStatic = !0) : r += i + t + \"{\" + e.digits + \"}\");\n } else e.inputmode = \"numeric\";\n return r += c(e.suffix, e), r += \"[-]\", n && (r = [ n + c(e.suffix, e) + \"[-]\", r ]), \n e.greedy = !1, function(e) {\n void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, \n a.default)(e.groupSeparator), \"g\"), \"\"), \",\" === e.radixPoint && (e.min = e.min.replace(e.radixPoint, \".\")), \n e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), \n null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, a.default)(e.groupSeparator), \"g\"), \"\"), \n \",\" === e.radixPoint && (e.max = e.max.replace(e.radixPoint, \".\")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, \n isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = \"done\");\n }(e), \"\" !== e.radixPoint && e.substituteRadixPoint && (e.substitutes[\".\" == e.radixPoint ? \",\" : \".\"] = e.radixPoint), \n r;\n },\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"999){+|1}\";\n },\n digits: \"*\",\n digitsOptional: !0,\n enforceDigitsOnBlur: !1,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n _radixDance: !0,\n groupSeparator: \"\",\n allowMinus: !0,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n prefix: \"\",\n suffix: \"\",\n min: null,\n max: null,\n SetMaxOnOverflow: !1,\n step: 1,\n inputType: \"text\",\n unmaskAsNumber: !1,\n roundingFN: Math.round,\n inputmode: \"decimal\",\n shortcuts: {\n k: \"1000\",\n m: \"1000000\"\n },\n placeholder: \"0\",\n greedy: !1,\n rightAlign: !0,\n insertMode: !0,\n autoUnmask: !1,\n skipOptionalPartCharacter: \"\",\n usePrototypeDefinitions: !1,\n stripLeadingZeroes: !0,\n substituteRadixPoint: !0,\n definitions: {\n 0: {\n validator: p\n },\n 1: {\n validator: p,\n definitionSymbol: \"9\"\n },\n 9: {\n validator: \"[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\",\n definitionSymbol: \"*\"\n },\n \"+\": {\n validator: function(e, t, i, n, a) {\n return a.allowMinus && (\"-\" === e || e === a.negationSymbol.front);\n }\n },\n \"-\": {\n validator: function(e, t, i, n, a) {\n return a.allowMinus && e === a.negationSymbol.back;\n }\n }\n },\n preValidation: function(e, t, i, n, a, r, o, s) {\n if (!1 !== a.__financeInput && i === a.radixPoint) return !1;\n var l = e.indexOf(a.radixPoint), c = t;\n if (t = function(e, t, i, n, a) {\n return a._radixDance && a.numericInput && t !== a.negationSymbol.back && e <= i && (i > 0 || t == a.radixPoint) && (void 0 === n.validPositions[e - 1] || n.validPositions[e - 1].input !== a.negationSymbol.back) && (e -= 1), \n e;\n }(t, i, l, r, a), \"-\" === i || i === a.negationSymbol.front) {\n if (!0 !== a.allowMinus) return !1;\n var u = !1, p = d(\"+\", r), h = d(\"-\", r);\n return -1 !== p && (u = [ p, h ]), !1 !== u ? {\n remove: u,\n caret: c - a.negationSymbol.back.length\n } : {\n insert: [ {\n pos: f.call(this, \"+\", r),\n c: a.negationSymbol.front,\n fromIsValid: !0\n }, {\n pos: f.call(this, \"-\", r),\n c: a.negationSymbol.back,\n fromIsValid: void 0\n } ],\n caret: c + a.negationSymbol.back.length\n };\n }\n if (i === a.groupSeparator) return {\n caret: c\n };\n if (s) return !0;\n if (-1 !== l && !0 === a._radixDance && !1 === n && i === a.radixPoint && void 0 !== a.digits && (isNaN(a.digits) || parseInt(a.digits) > 0) && l !== t) return {\n caret: a._radixDance && t === l - 1 ? l + 1 : l\n };\n if (!1 === a.__financeInput) if (n) {\n if (a.digitsOptional) return {\n rewritePosition: o.end\n };\n if (!a.digitsOptional) {\n if (o.begin > l && o.end <= l) return i === a.radixPoint ? {\n insert: {\n pos: l + 1,\n c: \"0\",\n fromIsValid: !0\n },\n rewritePosition: l\n } : {\n rewritePosition: l + 1\n };\n if (o.begin < l) return {\n rewritePosition: o.begin - 1\n };\n }\n } else if (!a.showMaskOnHover && !a.showMaskOnFocus && !a.digitsOptional && a.digits > 0 && \"\" === this.__valueGet.call(this.el)) return {\n rewritePosition: l\n };\n return {\n rewritePosition: t\n };\n },\n postValidation: function(e, t, i, n, a, r, o) {\n if (!1 === n) return n;\n if (o) return !0;\n if (null !== a.min || null !== a.max) {\n var s = a.onUnMask(e.slice().reverse().join(\"\"), void 0, l.extend({}, a, {\n unmaskAsNumber: !0\n }));\n if (null !== a.min && s < a.min && (s.toString().length > a.min.toString().length || s < 0)) return !1;\n if (null !== a.max && s > a.max) return !!a.SetMaxOnOverflow && {\n refreshFromBuffer: !0,\n buffer: u(a.max.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n };\n }\n return n;\n },\n onUnMask: function(e, t, i) {\n if (\"\" === t && !0 === i.nullable) return t;\n var n = e.replace(i.prefix, \"\");\n return n = (n = n.replace(i.suffix, \"\")).replace(new RegExp((0, a.default)(i.groupSeparator), \"g\"), \"\"), \n \"\" !== i.placeholder.charAt(0) && (n = n.replace(new RegExp(i.placeholder.charAt(0), \"g\"), \"0\")), \n i.unmaskAsNumber ? (\"\" !== i.radixPoint && -1 !== n.indexOf(i.radixPoint) && (n = n.replace(a.default.call(this, i.radixPoint), \".\")), \n n = (n = n.replace(new RegExp(\"^\" + (0, a.default)(i.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n a.default)(i.negationSymbol.back) + \"$\"), \"\"), Number(n)) : n;\n },\n isComplete: function(e, t) {\n var i = (t.numericInput ? e.slice().reverse() : e).join(\"\");\n return i = (i = (i = (i = (i = i.replace(new RegExp(\"^\" + (0, a.default)(t.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n a.default)(t.negationSymbol.back) + \"$\"), \"\")).replace(t.prefix, \"\")).replace(t.suffix, \"\")).replace(new RegExp((0, \n a.default)(t.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \",\" === t.radixPoint && (i = i.replace((0, \n a.default)(t.radixPoint), \".\")), isFinite(i);\n },\n onBeforeMask: function(e, t) {\n var i = t.radixPoint || \",\";\n isFinite(t.digits) && (t.digits = parseInt(t.digits)), \"number\" != typeof e && \"number\" !== t.inputType || \"\" === i || (e = e.toString().replace(\".\", i));\n var n = \"-\" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, r = e.split(i), o = r[0].replace(/[^\\-0-9]/g, \"\"), s = r.length > 1 ? r[1].replace(/[^0-9]/g, \"\") : \"\", l = r.length > 1;\n e = o + (\"\" !== s ? i + s : s);\n var c = 0;\n if (\"\" !== i && (c = t.digitsOptional ? t.digits < s.length ? t.digits : s.length : t.digits, \n \"\" !== s || !t.digitsOptional)) {\n var f = Math.pow(10, c || 1);\n e = e.replace((0, a.default)(i), \".\"), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * f) / f).toFixed(c)), \n e = e.toString().replace(\".\", i);\n }\n if (0 === t.digits && -1 !== e.indexOf(i) && (e = e.substring(0, e.indexOf(i))), \n null !== t.min || null !== t.max) {\n var d = e.toString().replace(i, \".\");\n null !== t.min && d < t.min ? e = t.min.toString().replace(\".\", i) : null !== t.max && d > t.max && (e = t.max.toString().replace(\".\", i));\n }\n return n && \"-\" !== e.charAt(0) && (e = \"-\" + e), u(e.toString().split(\"\"), c, t, l).join(\"\");\n },\n onBeforeWrite: function(e, t, i, n) {\n function r(e, t) {\n if (!1 !== n.__financeInput || t) {\n var i = e.indexOf(n.radixPoint);\n -1 !== i && e.splice(i, 1);\n }\n if (\"\" !== n.groupSeparator) for (;-1 !== (i = e.indexOf(n.groupSeparator)); ) e.splice(i, 1);\n return e;\n }\n var o, s;\n if (n.stripLeadingZeroes && (s = function(e, t) {\n var i = new RegExp(\"(^\" + (\"\" !== t.negationSymbol.front ? (0, a.default)(t.negationSymbol.front) + \"?\" : \"\") + (0, \n a.default)(t.prefix) + \")(.*)(\" + (0, a.default)(t.suffix) + (\"\" != t.negationSymbol.back ? (0, \n a.default)(t.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(e.slice().reverse().join(\"\")), n = i ? i[2] : \"\", r = !1;\n return n && (n = n.split(t.radixPoint.charAt(0))[0], r = new RegExp(\"^[0\" + t.groupSeparator + \"]*\").exec(n)), \n !(!r || !(r[0].length > 1 || r[0].length > 0 && r[0].length < n.length)) && r;\n }(t, n))) for (var c = t.join(\"\").lastIndexOf(s[0].split(\"\").reverse().join(\"\")) - (s[0] == s.input ? 0 : 1), f = s[0] == s.input ? 1 : 0, d = s[0].length - f; d > 0; d--) delete this.maskset.validPositions[c + d], \n delete t[c + d];\n if (e) switch (e.type) {\n case \"blur\":\n case \"checkval\":\n if (null !== n.min) {\n var p = n.onUnMask(t.slice().reverse().join(\"\"), void 0, l.extend({}, n, {\n unmaskAsNumber: !0\n }));\n if (null !== n.min && p < n.min) return {\n refreshFromBuffer: !0,\n buffer: u(n.min.toString().replace(\".\", n.radixPoint).split(\"\"), n.digits, n).reverse()\n };\n }\n if (t[t.length - 1] === n.negationSymbol.front) {\n var h = new RegExp(\"(^\" + (\"\" != n.negationSymbol.front ? (0, a.default)(n.negationSymbol.front) + \"?\" : \"\") + (0, \n a.default)(n.prefix) + \")(.*)(\" + (0, a.default)(n.suffix) + (\"\" != n.negationSymbol.back ? (0, \n a.default)(n.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(r(t.slice(), !0).reverse().join(\"\"));\n 0 == (h ? h[2] : \"\") && (o = {\n refreshFromBuffer: !0,\n buffer: [ 0 ]\n });\n } else if (\"\" !== n.radixPoint) {\n t.indexOf(n.radixPoint) === n.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + n.suffix.length) : (t.splice(0, 1 + n.suffix.length), \n o = {\n refreshFromBuffer: !0,\n buffer: r(t)\n }));\n }\n if (n.enforceDigitsOnBlur) {\n var v = (o = o || {}) && o.buffer || t.slice().reverse();\n o.refreshFromBuffer = !0, o.buffer = u(v, n.digits, n, !0).reverse();\n }\n }\n return o;\n },\n onKeyDown: function(e, t, i, n) {\n var a, r = l(this);\n if (3 != e.location) {\n var s, c = e.key;\n if ((s = n.shortcuts && n.shortcuts[c]) && s.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(s)), \n r.trigger(\"setvalue\"), !1;\n }\n if (e.ctrlKey) switch (e.key) {\n case o.keys.ArrowUp:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(n.step)), \n r.trigger(\"setvalue\"), !1;\n\n case o.keys.ArrowDown:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(n.step)), \n r.trigger(\"setvalue\"), !1;\n }\n if (!e.shiftKey && (e.key === o.keys.Delete || e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI) && i.begin !== t.length) {\n if (t[e.key === o.keys.Delete ? i.begin - 1 : i.end] === n.negationSymbol.front) return a = t.slice().reverse(), \n \"\" !== n.negationSymbol.front && a.shift(), \"\" !== n.negationSymbol.back && a.pop(), \n r.trigger(\"setvalue\", [ a.join(\"\"), i.begin ]), !1;\n if (!0 === n._radixDance) {\n var f = t.indexOf(n.radixPoint);\n if (n.digitsOptional) {\n if (0 === f) return (a = t.slice().reverse()).pop(), r.trigger(\"setvalue\", [ a.join(\"\"), i.begin >= a.length ? a.length : i.begin ]), \n !1;\n } else if (-1 !== f && (i.begin < f || i.end < f || e.key === o.keys.Delete && (i.begin === f || i.begin - 1 === f))) {\n var d = void 0;\n return i.begin === i.end && (e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI ? i.begin++ : e.key === o.keys.Delete && i.begin - 1 === f && (d = l.extend({}, i), \n i.begin--, i.end--)), (a = t.slice().reverse()).splice(a.length - i.begin, i.begin - i.end + 1), \n a = u(a, n.digits, n).join(\"\"), d && (i = d), r.trigger(\"setvalue\", [ a, i.begin >= a.length ? f + 1 : i.begin ]), \n !1;\n }\n }\n }\n }\n },\n currency: {\n prefix: \"\",\n groupSeparator: \",\",\n alias: \"numeric\",\n digits: 2,\n digitsOptional: !1\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n inputmode: \"numeric\",\n digits: 0\n },\n percentage: {\n alias: \"numeric\",\n min: 0,\n max: 100,\n suffix: \" %\",\n digits: 0,\n allowMinus: !1\n },\n indianns: {\n alias: \"numeric\",\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"99){*|1}(\" + e.groupSeparator + \"999){1|1}\";\n },\n groupSeparator: \",\",\n radixPoint: \".\",\n placeholder: \"0\",\n digits: 2,\n digitsOptional: !1\n }\n });\n },\n 9380: function(e, t, i) {\n var n;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var a = ((n = i(8741)) && n.__esModule ? n : {\n default: n\n }).default ? window : {};\n t.default = a;\n },\n 7760: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.HandleNativePlaceholder = function(e, t) {\n var i = e ? e.inputmask : this;\n if (s.ie) {\n if (e.inputmask._valueGet() !== t && (e.placeholder !== t || \"\" === e.placeholder)) {\n var n = r.getBuffer.call(i).slice(), a = e.inputmask._valueGet();\n if (a !== t) {\n var o = r.getLastValidPosition.call(i);\n -1 === o && a === r.getBufferTemplate.call(i).join(\"\") ? n = [] : -1 !== o && u.call(i, n), \n d(e, n);\n }\n }\n } else e.placeholder !== t && (e.placeholder = t, \"\" === e.placeholder && e.removeAttribute(\"placeholder\"));\n }, t.applyInputValue = c, t.checkVal = f, t.clearOptionalTail = u, t.unmaskedvalue = function(e) {\n var t = e ? e.inputmask : this, i = t.opts, n = t.maskset;\n if (e) {\n if (void 0 === e.inputmask) return e.value;\n e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));\n }\n for (var a = [], o = n.validPositions, s = 0, l = o.length; s < l; s++) o[s] && o[s].match && (1 != o[s].match.static || Array.isArray(n.metadata) && !0 !== o[s].generatedInput) && a.push(o[s].input);\n var u = 0 === a.length ? \"\" : (t.isRTL ? a.reverse() : a).join(\"\");\n if (\"function\" == typeof i.onUnMask) {\n var f = (t.isRTL ? r.getBuffer.call(t).slice().reverse() : r.getBuffer.call(t)).join(\"\");\n u = i.onUnMask.call(t, f, u, i);\n }\n return u;\n }, t.writeBuffer = d;\n var n = i(2839), a = i(4713), r = i(8711), o = i(7215), s = i(9845), l = i(6030);\n function c(e, t) {\n var i = e ? e.inputmask : this, n = i.opts;\n e.inputmask.refreshValue = !1, \"function\" == typeof n.onBeforeMask && (t = n.onBeforeMask.call(i, t, n) || t), \n f(e, !0, !1, t = (t || \"\").toString().split(\"\")), i.undoValue = i._valueGet(!0), \n (n.clearMaskOnLostFocus || n.clearIncomplete) && e.inputmask._valueGet() === r.getBufferTemplate.call(i).join(\"\") && -1 === r.getLastValidPosition.call(i) && e.inputmask._valueSet(\"\");\n }\n function u(e) {\n e.length = 0;\n for (var t, i = a.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = i.shift()); ) e.push(t);\n return e;\n }\n function f(e, t, i, n, s) {\n var c = e ? e.inputmask : this, u = c.maskset, f = c.opts, p = c.dependencyLib, h = n.slice(), v = \"\", m = -1, g = void 0, y = f.skipOptionalPartCharacter;\n f.skipOptionalPartCharacter = \"\", r.resetMaskSet.call(c), u.tests = {}, m = f.radixPoint ? r.determineNewCaretPosition.call(c, {\n begin: 0,\n end: 0\n }, !1, !1 === f.__financeInput ? \"radixFocus\" : void 0).begin : 0, u.p = m, c.caretPos = {\n begin: m\n };\n var k = [], b = c.caretPos;\n if (h.forEach((function(e, t) {\n if (void 0 !== e) {\n var n = new p.Event(\"_checkval\");\n n.key = e, v += e;\n var o = r.getLastValidPosition.call(c, void 0, !0);\n !function(e, t) {\n for (var i = a.getMaskTemplate.call(c, !0, 0).slice(e, r.seekNext.call(c, e, !1, !1)).join(\"\").replace(/'/g, \"\"), n = i.indexOf(t); n > 0 && \" \" === i[n - 1]; ) n--;\n var o = 0 === n && !r.isMask.call(c, e) && (a.getTest.call(c, e).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e).match.static && a.getTest.call(c, e).match.nativeDef === \"'\" + t.charAt(0) || \" \" === a.getTest.call(c, e).match.nativeDef && (a.getTest.call(c, e + 1).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e + 1).match.static && a.getTest.call(c, e + 1).match.nativeDef === \"'\" + t.charAt(0)));\n if (!o && n > 0 && !r.isMask.call(c, e, !1, !0)) {\n var s = r.seekNext.call(c, e);\n c.caretPos.begin < s && (c.caretPos = {\n begin: s\n });\n }\n return o;\n }(m, v) ? (g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, c.caretPos.begin)) && (m = c.caretPos.begin + 1, \n v = \"\") : g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, o + 1), g ? (void 0 !== g.pos && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static && void 0 === u.validPositions[g.pos].alternation && (k.push(g.pos), \n c.isRTL || (g.forwardPosition = g.pos + 1)), d.call(c, void 0, r.getBuffer.call(c), g.forwardPosition, n, !1), \n c.caretPos = {\n begin: g.forwardPosition,\n end: g.forwardPosition\n }, b = c.caretPos) : void 0 === u.validPositions[t] && h[t] === a.getPlaceholder.call(c, t) && r.isMask.call(c, t, !0) ? c.caretPos.begin++ : c.caretPos = b;\n }\n })), k.length > 0) {\n var x, P, w = r.seekNext.call(c, -1, void 0, !1);\n if (!o.isComplete.call(c, r.getBuffer.call(c)) && k.length <= w || o.isComplete.call(c, r.getBuffer.call(c)) && k.length > 0 && k.length !== w && 0 === k[0]) for (var S = w; void 0 !== (x = k.shift()); ) {\n var M = new p.Event(\"_checkval\");\n if ((P = u.validPositions[x]).generatedInput = !0, M.key = P.input, (g = l.EventHandlers.keypressEvent.call(c, M, !0, !1, i, S)) && void 0 !== g.pos && g.pos !== x && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static) k.push(g.pos); else if (!g) break;\n S++;\n }\n }\n t && d.call(c, e, r.getBuffer.call(c), g ? g.forwardPosition : c.caretPos.begin, s || new p.Event(\"checkval\"), s && (\"input\" === s.type && c.undoValue !== r.getBuffer.call(c).join(\"\") || \"paste\" === s.type)), \n f.skipOptionalPartCharacter = y;\n }\n function d(e, t, i, a, s) {\n var l = e ? e.inputmask : this, c = l.opts, u = l.dependencyLib;\n if (a && \"function\" == typeof c.onBeforeWrite) {\n var f = c.onBeforeWrite.call(l, a, t, i, c);\n if (f) {\n if (f.refreshFromBuffer) {\n var d = f.refreshFromBuffer;\n o.refreshFromBuffer.call(l, !0 === d ? d : d.start, d.end, f.buffer || t), t = r.getBuffer.call(l, !0);\n }\n void 0 !== i && (i = void 0 !== f.caret ? f.caret : i);\n }\n }\n if (void 0 !== e && (e.inputmask._valueSet(t.join(\"\")), void 0 === i || void 0 !== a && \"blur\" === a.type || r.caret.call(l, e, i, void 0, void 0, void 0 !== a && \"keydown\" === a.type && (a.key === n.keys.Delete || a.key === n.keys.Backspace)), \n !0 === s)) {\n var p = u(e), h = e.inputmask._valueGet();\n e.inputmask.skipInputEvent = !0, p.trigger(\"input\"), setTimeout((function() {\n h === r.getBufferTemplate.call(l).join(\"\") ? p.trigger(\"cleared\") : !0 === o.isComplete.call(l, t) && p.trigger(\"complete\");\n }), 0);\n }\n }\n },\n 2394: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = i(157), a = m(i(4963)), r = m(i(9380)), o = i(2391), s = i(4713), l = i(8711), c = i(7215), u = i(7760), f = i(9716), d = m(i(7392)), p = m(i(3976)), h = m(i(8741));\n function v(e) {\n return v = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, v(e);\n }\n function m(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var g = r.default.document, y = \"_inputmask_opts\";\n function k(e, t, i) {\n if (h.default) {\n if (!(this instanceof k)) return new k(e, t, i);\n this.dependencyLib = a.default, this.el = void 0, this.events = {}, this.maskset = void 0, \n !0 !== i && (\"[object Object]\" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, \n e && (t.alias = e)), this.opts = a.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, \n this.userOptions = t || {}, b(this.opts.alias, t, this.opts)), this.refreshValue = !1, \n this.undoValue = void 0, this.$el = void 0, this.skipInputEvent = !1, this.validationEvent = !1, \n this.ignorable = !1, this.maxLength, this.mouseEnter = !1, this.clicked = 0, this.originalPlaceholder = void 0, \n this.isComposing = !1, this.hasAlternator = !1;\n }\n }\n function b(e, t, i) {\n var n = k.prototype.aliases[e];\n return n ? (n.alias && b(n.alias, void 0, i), a.default.extend(!0, i, n), a.default.extend(!0, i, t), \n !0) : (null === i.mask && (i.mask = e), !1);\n }\n k.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: p.default,\n definitions: d.default,\n aliases: {},\n masksCache: {},\n get isRTL() {\n return this.opts.isRTL || this.opts.numericInput;\n },\n mask: function(e) {\n var t = this;\n return \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), \n (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : [].slice.call(e)).forEach((function(e, i) {\n var s = a.default.extend(!0, {}, t.opts);\n if (function(e, t, i, n) {\n function o(t, a) {\n var o = \"\" === n ? t : n + \"-\" + t;\n null !== (a = void 0 !== a ? a : e.getAttribute(o)) && (\"string\" == typeof a && (0 === t.indexOf(\"on\") ? a = r.default[a] : \"false\" === a ? a = !1 : \"true\" === a && (a = !0)), \n i[t] = a);\n }\n if (!0 === t.importDataAttributes) {\n var s, l, c, u, f = e.getAttribute(n);\n if (f && \"\" !== f && (f = f.replace(/'/g, '\"'), l = JSON.parse(\"{\" + f + \"}\")), \n l) for (u in c = void 0, l) if (\"alias\" === u.toLowerCase()) {\n c = l[u];\n break;\n }\n for (s in o(\"alias\", c), i.alias && b(i.alias, i, t), t) {\n if (l) for (u in c = void 0, l) if (u.toLowerCase() === s.toLowerCase()) {\n c = l[u];\n break;\n }\n o(s, c);\n }\n }\n a.default.extend(!0, t, i), (\"rtl\" === e.dir || t.rightAlign) && (e.style.textAlign = \"right\");\n (\"rtl\" === e.dir || t.numericInput) && (e.dir = \"ltr\", e.removeAttribute(\"dir\"), \n t.isRTL = !0);\n return Object.keys(i).length;\n }(e, s, a.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {\n var l = (0, o.generateMaskSet)(s, t.noMasksCache);\n void 0 !== l && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), \n e.inputmask = new k(void 0, void 0, !0), e.inputmask.opts = s, e.inputmask.noMasksCache = t.noMasksCache, \n e.inputmask.userOptions = a.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, \n e.inputmask.$el = (0, a.default)(e), e.inputmask.maskset = l, a.default.data(e, y, t.userOptions), \n n.mask.call(e.inputmask));\n }\n })), e && e[0] && e[0].inputmask || this;\n },\n option: function(e, t) {\n return \"string\" == typeof e ? this.opts[e] : \"object\" === v(e) ? (a.default.extend(this.userOptions, e), \n this.el && !0 !== t && this.mask(this.el), this) : void 0;\n },\n unmaskedvalue: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n void 0 === this.el || void 0 !== e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !1, !1, t), \"function\" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, l.getBuffer.call(this), 0, this.opts);\n }\n return u.unmaskedvalue.call(this, this.el);\n },\n remove: function() {\n if (this.el) {\n a.default.data(this.el, y, null);\n var e = this.opts.autoUnmask ? (0, u.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);\n e !== l.getBufferTemplate.call(this).join(\"\") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(\"\"), \n f.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), \"value\") && this.__valueGet && Object.defineProperty(this.el, \"value\", {\n get: this.__valueGet,\n set: this.__valueSet,\n configurable: !0\n }) : g.__lookupGetter__ && this.el.__lookupGetter__(\"value\") && this.__valueGet && (this.el.__defineGetter__(\"value\", this.__valueGet), \n this.el.__defineSetter__(\"value\", this.__valueSet)), this.el.inputmask = void 0;\n }\n return this.el;\n },\n getemptymask: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n (this.isRTL ? l.getBufferTemplate.call(this).reverse() : l.getBufferTemplate.call(this)).join(\"\");\n },\n hasMaskedValue: function() {\n return !this.opts.autoUnmask;\n },\n isComplete: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n c.isComplete.call(this, l.getBuffer.call(this));\n },\n getmetadata: function() {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n Array.isArray(this.maskset.metadata)) {\n var e = s.getMaskTemplate.call(this, !0, 0, !1).join(\"\");\n return this.maskset.metadata.forEach((function(t) {\n return t.mask !== e || (e = t, !1);\n })), e;\n }\n return this.maskset.metadata;\n },\n isValid: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !0, !1, t);\n } else e = this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\");\n for (var i = l.getBuffer.call(this), n = l.determineLastRequiredPosition.call(this), a = i.length - 1; a > n && !l.isMask.call(this, a); a--) ;\n return i.splice(n, a + 1 - n), c.isComplete.call(this, i) && e === (this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\"));\n },\n format: function(e, t) {\n this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache);\n var i = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !0, !1, i);\n var n = this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\");\n return t ? {\n value: n,\n metadata: this.getmetadata()\n } : n;\n },\n setValue: function(e) {\n this.el && (0, a.default)(this.el).trigger(\"setvalue\", [ e ]);\n },\n analyseMask: o.analyseMask\n }, k.extendDefaults = function(e) {\n a.default.extend(!0, k.prototype.defaults, e);\n }, k.extendDefinitions = function(e) {\n a.default.extend(!0, k.prototype.definitions, e);\n }, k.extendAliases = function(e) {\n a.default.extend(!0, k.prototype.aliases, e);\n }, k.format = function(e, t, i) {\n return k(t).format(e, i);\n }, k.unmask = function(e, t) {\n return k(t).unmaskedvalue(e);\n }, k.isValid = function(e, t) {\n return k(t).isValid(e);\n }, k.remove = function(e) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask && e.inputmask.remove();\n }));\n }, k.setValue = function(e, t) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask ? e.inputmask.setValue(t) : (0, a.default)(e).trigger(\"setvalue\", [ t ]);\n }));\n }, k.dependencyLib = a.default, r.default.Inputmask = k;\n var x = k;\n t.default = x;\n },\n 5296: function(e, t, i) {\n function n(e) {\n return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, n(e);\n }\n var a = h(i(9380)), r = h(i(2394)), o = h(i(8741));\n function s(e, t) {\n for (var i = 0; i < t.length; i++) {\n var a = t[i];\n a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n Object.defineProperty(e, (r = a.key, o = void 0, o = function(e, t) {\n if (\"object\" !== n(e) || null === e) return e;\n var i = e[Symbol.toPrimitive];\n if (void 0 !== i) {\n var a = i.call(e, t || \"default\");\n if (\"object\" !== n(a)) return a;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === t ? String : Number)(e);\n }(r, \"string\"), \"symbol\" === n(o) ? o : String(o)), a);\n }\n var r, o;\n }\n function l(e) {\n var t = f();\n return function() {\n var i, a = p(e);\n if (t) {\n var r = p(this).constructor;\n i = Reflect.construct(a, arguments, r);\n } else i = a.apply(this, arguments);\n return function(e, t) {\n if (t && (\"object\" === n(t) || \"function\" == typeof t)) return t;\n if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }(e);\n }(this, i);\n };\n }\n function c(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return c = function(e) {\n if (null === e || (i = e, -1 === Function.toString.call(i).indexOf(\"[native code]\"))) return e;\n var i;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, n);\n }\n function n() {\n return u(e, arguments, p(this).constructor);\n }\n return n.prototype = Object.create(e.prototype, {\n constructor: {\n value: n,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), d(n, e);\n }, c(e);\n }\n function u(e, t, i) {\n return u = f() ? Reflect.construct.bind() : function(e, t, i) {\n var n = [ null ];\n n.push.apply(n, t);\n var a = new (Function.bind.apply(e, n));\n return i && d(a, i.prototype), a;\n }, u.apply(null, arguments);\n }\n function f() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), \n !0;\n } catch (e) {\n return !1;\n }\n }\n function d(e, t) {\n return d = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {\n return e.__proto__ = t, e;\n }, d(e, t);\n }\n function p(e) {\n return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n }, p(e);\n }\n function h(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var v = a.default.document;\n if (o.default && v && v.head && v.head.attachShadow && a.default.customElements && void 0 === a.default.customElements.get(\"input-mask\")) {\n var m = function(e) {\n !function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), t && d(e, t);\n }(o, e);\n var t, i, n, a = l(o);\n function o() {\n var e;\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, o);\n var t = (e = a.call(this)).getAttributeNames(), i = e.attachShadow({\n mode: \"closed\"\n }), n = v.createElement(\"input\");\n for (var s in n.type = \"text\", i.appendChild(n), t) Object.prototype.hasOwnProperty.call(t, s) && n.setAttribute(t[s], e.getAttribute(t[s]));\n var l = new r.default;\n return l.dataAttribute = \"\", l.mask(n), n.inputmask.shadowRoot = i, e;\n }\n return t = o, i && s(t.prototype, i), n && s(t, n), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), t;\n }(c(HTMLElement));\n a.default.customElements.define(\"input-mask\", m);\n }\n },\n 2839: function(e, t) {\n function i(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return n(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return n(e, t);\n }(e, t) || function() {\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 n(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.keys = t.keyCode = void 0, t.toKey = function(e, t) {\n return r[e] || (t ? String.fromCharCode(e) : String.fromCharCode(e).toLowerCase());\n }, t.toKeyCode = function(e) {\n return a[e];\n };\n var a = {\n AltGraph: 18,\n ArrowDown: 40,\n ArrowLeft: 37,\n ArrowRight: 39,\n ArrowUp: 38,\n Backspace: 8,\n BACKSPACE_SAFARI: 127,\n CapsLock: 20,\n Delete: 46,\n End: 35,\n Enter: 13,\n Escape: 27,\n Home: 36,\n Insert: 45,\n PageDown: 34,\n PageUp: 33,\n Space: 32,\n Tab: 9,\n c: 67,\n x: 88,\n z: 90,\n Shift: 16,\n Control: 17,\n Alt: 18,\n Pause: 19,\n Meta_LEFT: 91,\n Meta_RIGHT: 92,\n ContextMenu: 93,\n Process: 229,\n Unidentified: 229,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123\n };\n t.keyCode = a;\n var r = Object.entries(a).reduce((function(e, t) {\n var n = i(t, 2), a = n[0], r = n[1];\n return e[r] = void 0 === e[r] ? a : e[r], e;\n }), {}), o = Object.entries(a).reduce((function(e, t) {\n var n = i(t, 2), a = n[0];\n n[1];\n return e[a] = \"Space\" === a ? \" \" : a, e;\n }), {});\n t.keys = o;\n },\n 2391: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.analyseMask = function(e, t, i) {\n var n, o, s, l, c, u, f = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, d = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, p = !1, h = new a.default, v = [], m = [], g = !1;\n function y(e, n, a) {\n a = void 0 !== a ? a : e.matches.length;\n var o = e.matches[a - 1];\n if (t) {\n if (0 === n.indexOf(\"[\") || p && /\\\\d|\\\\s|\\\\w|\\\\p/i.test(n) || \".\" === n) {\n var s = i.casing ? \"i\" : \"\";\n /^\\\\p\\{.*}$/i.test(n) && (s += \"u\"), e.matches.splice(a++, 0, {\n fn: new RegExp(n, s),\n static: !1,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== n,\n casing: null,\n def: n,\n placeholder: void 0,\n nativeDef: n\n });\n } else p && (n = n[n.length - 1]), n.split(\"\").forEach((function(t, n) {\n o = e.matches[a - 1], e.matches.splice(a++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || t) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || t) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== t && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || t,\n placeholder: void 0 !== i.staticDefinitionSymbol ? t : void 0,\n nativeDef: (p ? \"'\" : \"\") + t\n });\n }));\n p = !1;\n } else {\n var l = i.definitions && i.definitions[n] || i.usePrototypeDefinitions && r.default.prototype.definitions[n];\n l && !p ? e.matches.splice(a++, 0, {\n fn: l.validator ? \"string\" == typeof l.validator ? new RegExp(l.validator, i.casing ? \"i\" : \"\") : new function() {\n this.test = l.validator;\n } : new RegExp(\".\"),\n static: l.static || !1,\n optionality: l.optional || !1,\n defOptionality: l.optional || !1,\n newBlockMarker: void 0 === o || l.optional ? \"master\" : o.def !== (l.definitionSymbol || n),\n casing: l.casing,\n def: l.definitionSymbol || n,\n placeholder: l.placeholder,\n nativeDef: n,\n generated: l.generated\n }) : (e.matches.splice(a++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || n) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || n) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== n && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || n,\n placeholder: void 0 !== i.staticDefinitionSymbol ? n : void 0,\n nativeDef: (p ? \"'\" : \"\") + n\n }), p = !1);\n }\n }\n function k() {\n if (v.length > 0) {\n if (y(l = v[v.length - 1], o), l.isAlternator) {\n c = v.pop();\n for (var e = 0; e < c.matches.length; e++) c.matches[e].isGroup && (c.matches[e].isGroup = !1);\n v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);\n }\n } else y(h, o);\n }\n function b(e) {\n var t = new a.default(!0);\n return t.openGroup = !1, t.matches = e, t;\n }\n function x() {\n if ((s = v.pop()).openGroup = !1, void 0 !== s) if (v.length > 0) {\n if ((l = v[v.length - 1]).matches.push(s), l.isAlternator) {\n for (var e = (c = v.pop()).matches[0].matches ? c.matches[0].matches.length : 1, t = 0; t < c.matches.length; t++) c.matches[t].isGroup = !1, \n c.matches[t].alternatorGroup = !1, null === i.keepStatic && e < (c.matches[t].matches ? c.matches[t].matches.length : 1) && (i.keepStatic = !0), \n e = c.matches[t].matches ? c.matches[t].matches.length : 1;\n v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);\n }\n } else h.matches.push(s); else k();\n }\n function P(e) {\n var t = e.pop();\n return t.isQuantifier && (t = b([ e.pop(), t ])), t;\n }\n t && (i.optionalmarker[0] = void 0, i.optionalmarker[1] = void 0);\n for (;n = t ? d.exec(e) : f.exec(e); ) {\n if (o = n[0], t) {\n switch (o.charAt(0)) {\n case \"?\":\n o = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n o = \"{\" + o + \"}\";\n break;\n\n case \"|\":\n if (0 === v.length) {\n var w = b(h.matches);\n w.openGroup = !0, v.push(w), h.matches = [], g = !0;\n }\n }\n switch (o) {\n case \"\\\\d\":\n o = \"[0-9]\";\n break;\n\n case \"\\\\p\":\n o += d.exec(e)[0], o += d.exec(e)[0];\n }\n }\n if (p) k(); else switch (o.charAt(0)) {\n case \"$\":\n case \"^\":\n t || k();\n break;\n\n case i.escapeChar:\n p = !0, t && k();\n break;\n\n case i.optionalmarker[1]:\n case i.groupmarker[1]:\n x();\n break;\n\n case i.optionalmarker[0]:\n v.push(new a.default(!1, !0));\n break;\n\n case i.groupmarker[0]:\n v.push(new a.default(!0));\n break;\n\n case i.quantifiermarker[0]:\n var S = new a.default(!1, !1, !0), M = (o = o.replace(/[{}?]/g, \"\")).split(\"|\"), _ = M[0].split(\",\"), O = isNaN(_[0]) ? _[0] : parseInt(_[0]), E = 1 === _.length ? O : isNaN(_[1]) ? _[1] : parseInt(_[1]), T = isNaN(M[1]) ? M[1] : parseInt(M[1]);\n \"*\" !== O && \"+\" !== O || (O = \"*\" === E ? 0 : 1), S.quantifier = {\n min: O,\n max: E,\n jit: T\n };\n var j = v.length > 0 ? v[v.length - 1].matches : h.matches;\n (n = j.pop()).isGroup || (n = b([ n ])), j.push(n), j.push(S);\n break;\n\n case i.alternatormarker:\n if (v.length > 0) {\n var A = (l = v[v.length - 1]).matches[l.matches.length - 1];\n u = l.openGroup && (void 0 === A.matches || !1 === A.isGroup && !1 === A.isAlternator) ? v.pop() : P(l.matches);\n } else u = P(h.matches);\n if (u.isAlternator) v.push(u); else if (u.alternatorGroup ? (c = v.pop(), u.alternatorGroup = !1) : c = new a.default(!1, !1, !1, !0), \n c.matches.push(u), v.push(c), u.openGroup) {\n u.openGroup = !1;\n var D = new a.default(!0);\n D.alternatorGroup = !0, v.push(D);\n }\n break;\n\n default:\n k();\n }\n }\n g && x();\n for (;v.length > 0; ) s = v.pop(), h.matches.push(s);\n h.matches.length > 0 && (!function e(n) {\n n && n.matches && n.matches.forEach((function(a, r) {\n var o = n.matches[r + 1];\n (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && a && a.isGroup && (a.isGroup = !1, \n t || (y(a, i.groupmarker[0], 0), !0 !== a.openGroup && y(a, i.groupmarker[1]))), \n e(a);\n }));\n }(h), m.push(h));\n (i.numericInput || i.isRTL) && function e(t) {\n for (var n in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, n)) {\n var a = parseInt(n);\n if (t.matches[n].isQuantifier && t.matches[a + 1] && t.matches[a + 1].isGroup) {\n var r = t.matches[n];\n t.matches.splice(n, 1), t.matches.splice(a + 1, 0, r);\n }\n void 0 !== t.matches[n].matches ? t.matches[n] = e(t.matches[n]) : t.matches[n] = ((o = t.matches[n]) === i.optionalmarker[0] ? o = i.optionalmarker[1] : o === i.optionalmarker[1] ? o = i.optionalmarker[0] : o === i.groupmarker[0] ? o = i.groupmarker[1] : o === i.groupmarker[1] && (o = i.groupmarker[0]), \n o);\n }\n var o;\n return t;\n }(m[0]);\n return m;\n }, t.generateMaskSet = function(e, t) {\n var i;\n function a(e, t) {\n var i = t.repeat, n = t.groupmarker, a = t.quantifiermarker, r = t.keepStatic;\n if (i > 0 || \"*\" === i || \"+\" === i) {\n var l = \"*\" === i ? 0 : \"+\" === i ? 1 : i;\n e = n[0] + e + n[1] + a[0] + l + \",\" + i + a[1];\n }\n if (!0 === r) {\n var c = e.match(new RegExp(\"(.)\\\\[([^\\\\]]*)\\\\]\", \"g\"));\n c && c.forEach((function(t, i) {\n var n = function(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return s(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return s(e, t);\n }(e, t) || function() {\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 }(t.split(\"[\"), 2), a = n[0], r = n[1];\n r = r.replace(\"]\", \"\"), e = e.replace(new RegExp(\"\".concat((0, o.default)(a), \"\\\\[\").concat((0, \n o.default)(r), \"\\\\]\")), a.charAt(0) === r.charAt(0) ? \"(\".concat(a, \"|\").concat(a).concat(r, \")\") : \"\".concat(a, \"[\").concat(r, \"]\"));\n }));\n }\n return e;\n }\n function l(e, i, o) {\n var s, l, c = !1;\n return null !== e && \"\" !== e || ((c = null !== o.regex) ? e = (e = o.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (c = !0, \n e = \".*\")), 1 === e.length && !1 === o.greedy && 0 !== o.repeat && (o.placeholder = \"\"), \n e = a(e, o), l = c ? \"regex_\" + o.regex : o.numericInput ? e.split(\"\").reverse().join(\"\") : e, \n null !== o.keepStatic && (l = \"ks_\" + o.keepStatic + l), void 0 === r.default.prototype.masksCache[l] || !0 === t ? (s = {\n mask: e,\n maskToken: r.default.prototype.analyseMask(e, c, o),\n validPositions: [],\n _buffer: void 0,\n buffer: void 0,\n tests: {},\n excludes: {},\n metadata: i,\n maskLength: void 0,\n jitOffset: {}\n }, !0 !== t && (r.default.prototype.masksCache[l] = s, s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]))) : s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]), \n s;\n }\n \"function\" == typeof e.mask && (e.mask = e.mask(e));\n if (Array.isArray(e.mask)) {\n if (e.mask.length > 1) {\n null === e.keepStatic && (e.keepStatic = !0);\n var c = e.groupmarker[0];\n return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {\n c.length > 1 && (c += e.alternatormarker), void 0 !== t.mask && \"function\" != typeof t.mask ? c += t.mask : c += t;\n })), l(c += e.groupmarker[1], e.mask, e);\n }\n e.mask = e.mask.pop();\n }\n i = e.mask && void 0 !== e.mask.mask && \"function\" != typeof e.mask.mask ? l(e.mask.mask, e.mask, e) : l(e.mask, e.mask, e);\n null === e.keepStatic && (e.keepStatic = !1);\n return i;\n };\n var n = l(i(4963)), a = l(i(9695)), r = l(i(2394)), o = l(i(7184));\n function s(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function l(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n },\n 157: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.mask = function() {\n var e = this, t = this.opts, i = this.el, u = this.dependencyLib;\n o.EventRuler.off(i);\n var f = function(t, i) {\n \"textarea\" !== t.tagName.toLowerCase() && i.ignorables.push(n.keys.Enter);\n var s = t.getAttribute(\"type\"), l = \"input\" === t.tagName.toLowerCase() && i.supportsInputType.includes(s) || t.isContentEditable || \"textarea\" === t.tagName.toLowerCase();\n if (!l) if (\"input\" === t.tagName.toLowerCase()) {\n var c = document.createElement(\"input\");\n c.setAttribute(\"type\", s), l = \"text\" === c.type, c = null;\n } else l = \"partial\";\n return !1 !== l ? function(t) {\n var n, s;\n function l() {\n return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== a.getLastValidPosition.call(e) || !0 !== i.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && i.clearMaskOnLostFocus ? (e.isRTL ? r.clearOptionalTail.call(e, a.getBuffer.call(e).slice()).reverse() : r.clearOptionalTail.call(e, a.getBuffer.call(e).slice())).join(\"\") : n.call(this) : \"\" : n.call(this);\n }\n function c(e) {\n s.call(this, e), this.inputmask && (0, r.applyInputValue)(this, e);\n }\n if (!t.inputmask.__valueGet) {\n if (!0 !== i.noValuePatching) {\n if (Object.getOwnPropertyDescriptor) {\n var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), \"value\") : void 0;\n f && f.get && f.set ? (n = f.get, s = f.set, Object.defineProperty(t, \"value\", {\n get: l,\n set: c,\n configurable: !0\n })) : \"input\" !== t.tagName.toLowerCase() && (n = function() {\n return this.textContent;\n }, s = function(e) {\n this.textContent = e;\n }, Object.defineProperty(t, \"value\", {\n get: l,\n set: c,\n configurable: !0\n }));\n } else document.__lookupGetter__ && t.__lookupGetter__(\"value\") && (n = t.__lookupGetter__(\"value\"), \n s = t.__lookupSetter__(\"value\"), t.__defineGetter__(\"value\", l), t.__defineSetter__(\"value\", c));\n t.inputmask.__valueGet = n, t.inputmask.__valueSet = s;\n }\n t.inputmask._valueGet = function(t) {\n return e.isRTL && !0 !== t ? n.call(this.el).split(\"\").reverse().join(\"\") : n.call(this.el);\n }, t.inputmask._valueSet = function(t, i) {\n s.call(this.el, null == t ? \"\" : !0 !== i && e.isRTL ? t.split(\"\").reverse().join(\"\") : t);\n }, void 0 === n && (n = function() {\n return this.value;\n }, s = function(e) {\n this.value = e;\n }, function(t) {\n if (u.valHooks && (void 0 === u.valHooks[t] || !0 !== u.valHooks[t].inputmaskpatch)) {\n var n = u.valHooks[t] && u.valHooks[t].get ? u.valHooks[t].get : function(e) {\n return e.value;\n }, o = u.valHooks[t] && u.valHooks[t].set ? u.valHooks[t].set : function(e, t) {\n return e.value = t, e;\n };\n u.valHooks[t] = {\n get: function(t) {\n if (t.inputmask) {\n if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();\n var r = n(t);\n return -1 !== a.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== i.nullable ? r : \"\";\n }\n return n(t);\n },\n set: function(e, t) {\n var i = o(e, t);\n return e.inputmask && (0, r.applyInputValue)(e, t), i;\n },\n inputmaskpatch: !0\n };\n }\n }(t.type), function(e) {\n o.EventRuler.on(e, \"mouseenter\", (function() {\n var e = this, t = e.inputmask._valueGet(!0);\n t != (e.inputmask.isRTL ? a.getBuffer.call(e.inputmask).slice().reverse() : a.getBuffer.call(e.inputmask)).join(\"\") && (0, \n r.applyInputValue)(e, t);\n }));\n }(t));\n }\n }(t) : t.inputmask = void 0, l;\n }(i, t);\n if (!1 !== f) {\n e.originalPlaceholder = i.placeholder, e.maxLength = void 0 !== i ? i.maxLength : void 0, \n -1 === e.maxLength && (e.maxLength = void 0), \"inputMode\" in i && null === i.getAttribute(\"inputmode\") && (i.inputMode = t.inputmode, \n i.setAttribute(\"inputmode\", t.inputmode)), !0 === f && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(i.autocomplete), \n s.iphone && (t.insertModeVisual = !1, i.setAttribute(\"autocorrect\", \"off\")), o.EventRuler.on(i, \"submit\", c.EventHandlers.submitEvent), \n o.EventRuler.on(i, \"reset\", c.EventHandlers.resetEvent), o.EventRuler.on(i, \"blur\", c.EventHandlers.blurEvent), \n o.EventRuler.on(i, \"focus\", c.EventHandlers.focusEvent), o.EventRuler.on(i, \"invalid\", c.EventHandlers.invalidEvent), \n o.EventRuler.on(i, \"click\", c.EventHandlers.clickEvent), o.EventRuler.on(i, \"mouseleave\", c.EventHandlers.mouseleaveEvent), \n o.EventRuler.on(i, \"mouseenter\", c.EventHandlers.mouseenterEvent), o.EventRuler.on(i, \"paste\", c.EventHandlers.pasteEvent), \n o.EventRuler.on(i, \"cut\", c.EventHandlers.cutEvent), o.EventRuler.on(i, \"complete\", t.oncomplete), \n o.EventRuler.on(i, \"incomplete\", t.onincomplete), o.EventRuler.on(i, \"cleared\", t.oncleared), \n !0 !== t.inputEventOnly && o.EventRuler.on(i, \"keydown\", c.EventHandlers.keyEvent), \n (s.mobile || t.inputEventOnly) && i.removeAttribute(\"maxLength\"), o.EventRuler.on(i, \"input\", c.EventHandlers.inputFallBackEvent)), \n o.EventRuler.on(i, \"setvalue\", c.EventHandlers.setValueEvent), a.getBufferTemplate.call(e).join(\"\"), \n e.undoValue = e._valueGet(!0);\n var d = (i.inputmask.shadowRoot || i.ownerDocument).activeElement;\n if (\"\" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || d === i) {\n (0, r.applyInputValue)(i, i.inputmask._valueGet(!0), t);\n var p = a.getBuffer.call(e).slice();\n !1 === l.isComplete.call(e, p) && t.clearIncomplete && a.resetMaskSet.call(e), t.clearMaskOnLostFocus && d !== i && (-1 === a.getLastValidPosition.call(e) ? p = [] : r.clearOptionalTail.call(e, p)), \n (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && d === i || \"\" !== i.inputmask._valueGet(!0)) && (0, \n r.writeBuffer)(i, p), d === i && a.caret.call(e, i, a.seekNext.call(e, a.getLastValidPosition.call(e)));\n }\n }\n };\n var n = i(2839), a = i(8711), r = i(7760), o = i(9716), s = i(9845), l = i(7215), c = i(6030);\n },\n 9695: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i, n) {\n this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, \n this.isOptional = t || !1, this.isQuantifier = i || !1, this.isAlternator = n || !1, \n this.quantifier = {\n min: 1,\n max: 1\n };\n };\n },\n 3194: function() {\n Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n value: function(e, t) {\n if (null == this) throw new TypeError('\"this\" is null or not defined');\n var i = Object(this), n = i.length >>> 0;\n if (0 === n) return !1;\n for (var a = 0 | t, r = Math.max(a >= 0 ? a : n - Math.abs(a), 0); r < n; ) {\n if (i[r] === e) return !0;\n r++;\n }\n return !1;\n }\n });\n },\n 9302: function() {\n var e = Function.bind.call(Function.call, Array.prototype.reduce), t = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable), i = Function.bind.call(Function.call, Array.prototype.concat), n = Object.keys;\n Object.entries || (Object.entries = function(a) {\n return e(n(a), (function(e, n) {\n return i(e, \"string\" == typeof n && t(a, n) ? [ [ n, a[n] ] ] : []);\n }), []);\n });\n },\n 7149: function() {\n function e(t) {\n return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, e(t);\n }\n \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === e(\"test\".__proto__) ? function(e) {\n return e.__proto__;\n } : function(e) {\n return e.constructor.prototype;\n });\n },\n 4013: function() {\n String.prototype.includes || (String.prototype.includes = function(e, t) {\n return \"number\" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t);\n });\n },\n 8711: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.caret = function(e, t, i, n, a) {\n var r, o = this, s = this.opts;\n if (void 0 === t) return \"selectionStart\" in e && \"selectionEnd\" in e ? (t = e.selectionStart, \n i = e.selectionEnd) : window.getSelection ? (r = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && r.commonAncestorContainer !== e || (t = r.startOffset, \n i = r.endOffset) : document.selection && document.selection.createRange && (i = (t = 0 - (r = document.selection.createRange()).duplicate().moveStart(\"character\", -e.inputmask._valueGet().length)) + r.text.length), \n {\n begin: n ? t : c.call(o, t),\n end: n ? i : c.call(o, i)\n };\n if (Array.isArray(t) && (i = o.isRTL ? t[0] : t[1], t = o.isRTL ? t[1] : t[0]), \n void 0 !== t.begin && (i = o.isRTL ? t.begin : t.end, t = o.isRTL ? t.end : t.begin), \n \"number\" == typeof t) {\n t = n ? t : c.call(o, t), i = \"number\" == typeof (i = n ? i : c.call(o, i)) ? i : t;\n var l = parseInt(((e.ownerDocument.defaultView || window).getComputedStyle ? (e.ownerDocument.defaultView || window).getComputedStyle(e, null) : e.currentStyle).fontSize) * i;\n if (e.scrollLeft = l > e.scrollWidth ? l : 0, e.inputmask.caretPos = {\n begin: t,\n end: i\n }, s.insertModeVisual && !1 === s.insertMode && t === i && (a || i++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) if (\"setSelectionRange\" in e) e.setSelectionRange(t, i); else if (window.getSelection) {\n if (r = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {\n var u = document.createTextNode(\"\");\n e.appendChild(u);\n }\n r.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), \n r.setEnd(e.firstChild, i < e.inputmask._valueGet().length ? i : e.inputmask._valueGet().length), \n r.collapse(!0);\n var f = window.getSelection();\n f.removeAllRanges(), f.addRange(r);\n } else e.createTextRange && ((r = e.createTextRange()).collapse(!0), r.moveEnd(\"character\", i), \n r.moveStart(\"character\", t), r.select());\n }\n }, t.determineLastRequiredPosition = function(e) {\n var t, i, r = this, s = r.maskset, l = r.dependencyLib, c = n.getMaskTemplate.call(r, !0, o.call(r), !0, !0), u = c.length, f = o.call(r), d = {}, p = s.validPositions[f], h = void 0 !== p ? p.locator.slice() : void 0;\n for (t = f + 1; t < c.length; t++) h = (i = n.getTestTemplate.call(r, t, h, t - 1)).locator.slice(), \n d[t] = l.extend(!0, {}, i);\n var v = p && void 0 !== p.alternation ? p.locator[p.alternation] : void 0;\n for (t = u - 1; t > f && (((i = d[t]).match.optionality || i.match.optionalQuantifier && i.match.newBlockMarker || v && (v !== d[t].locator[p.alternation] && 1 != i.match.static || !0 === i.match.static && i.locator[p.alternation] && a.checkAlternationMatch.call(r, i.locator[p.alternation].toString().split(\",\"), v.toString().split(\",\")) && \"\" !== n.getTests.call(r, t)[0].def)) && c[t] === n.getPlaceholder.call(r, t, i.match)); t--) u--;\n return e ? {\n l: u,\n def: d[u] ? d[u].match : void 0\n } : u;\n }, t.determineNewCaretPosition = function(e, t, i) {\n var a = this, c = a.maskset, u = a.opts;\n t && (a.isRTL ? e.end = e.begin : e.begin = e.end);\n if (e.begin === e.end) {\n switch (i = i || u.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n e = {\n begin: 0,\n end: r.call(a).length\n };\n break;\n\n case \"ignore\":\n e.end = e.begin = l.call(a, o.call(a));\n break;\n\n case \"radixFocus\":\n if (a.clicked > 1 && 0 == c.validPositions.length) break;\n if (function(e) {\n if (\"\" !== u.radixPoint && 0 !== u.digits) {\n var t = c.validPositions;\n if (void 0 === t[e] || t[e].input === n.getPlaceholder.call(a, e)) {\n if (e < l.call(a, -1)) return !0;\n var i = r.call(a).indexOf(u.radixPoint);\n if (-1 !== i) {\n for (var o = 0, s = t.length; o < s; o++) if (t[o] && i < o && t[o].input !== n.getPlaceholder.call(a, o)) return !1;\n return !0;\n }\n }\n }\n return !1;\n }(e.begin)) {\n var f = r.call(a).join(\"\").indexOf(u.radixPoint);\n e.end = e.begin = u.numericInput ? l.call(a, f) : f;\n break;\n }\n\n default:\n var d = e.begin, p = o.call(a, d, !0), h = l.call(a, -1 !== p || s.call(a, 0) ? p : -1);\n if (d <= h) e.end = e.begin = s.call(a, d, !1, !0) ? d : l.call(a, d); else {\n var v = c.validPositions[p], m = n.getTestTemplate.call(a, h, v ? v.match.locator : void 0, v), g = n.getPlaceholder.call(a, h, m.match);\n if (\"\" !== g && r.call(a)[h] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !s.call(a, h, u.keepStatic, !0) && m.match.def === g) {\n var y = l.call(a, h);\n (d >= y || d === h) && (h = y);\n }\n e.end = e.begin = h;\n }\n }\n return e;\n }\n }, t.getBuffer = r, t.getBufferTemplate = function() {\n var e = this.maskset;\n void 0 === e._buffer && (e._buffer = n.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));\n return e._buffer;\n }, t.getLastValidPosition = o, t.isMask = s, t.resetMaskSet = function(e) {\n var t = this.maskset;\n t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);\n }, t.seekNext = l, t.seekPrevious = function(e, t) {\n var i = this, a = e - 1;\n if (e <= 0) return 0;\n for (;a > 0 && (!0 === t && (!0 !== n.getTest.call(i, a).match.newBlockMarker || !s.call(i, a, void 0, !0)) || !0 !== t && !s.call(i, a, void 0, !0)); ) a--;\n return a;\n }, t.translatePosition = c;\n var n = i(4713), a = i(7215);\n function r(e) {\n var t = this, i = t.maskset;\n return void 0 !== i.buffer && !0 !== e || (i.buffer = n.getMaskTemplate.call(t, !0, o.call(t), !0), \n void 0 === i._buffer && (i._buffer = i.buffer.slice())), i.buffer;\n }\n function o(e, t, i) {\n var n = this.maskset, a = -1, r = -1, o = i || n.validPositions;\n void 0 === e && (e = -1);\n for (var s = 0, l = o.length; s < l; s++) o[s] && (t || !0 !== o[s].generatedInput) && (s <= e && (a = s), \n s >= e && (r = s));\n return -1 === a || a == e ? r : -1 == r || e - a < r - e ? a : r;\n }\n function s(e, t, i) {\n var a = this, r = this.maskset, o = n.getTestTemplate.call(a, e).match;\n if (\"\" === o.def && (o = n.getTest.call(a, e).match), !0 !== o.static) return o.fn;\n if (!0 === i && void 0 !== r.validPositions[e] && !0 !== r.validPositions[e].generatedInput) return !0;\n if (!0 !== t && e > -1) {\n if (i) {\n var s = n.getTests.call(a, e);\n return s.length > 1 + (\"\" === s[s.length - 1].match.def ? 1 : 0);\n }\n var l = n.determineTestTemplate.call(a, e, n.getTests.call(a, e)), c = n.getPlaceholder.call(a, e, l.match);\n return l.match.def !== c;\n }\n return !1;\n }\n function l(e, t, i) {\n var a = this;\n void 0 === i && (i = !0);\n for (var r = e + 1; \"\" !== n.getTest.call(a, r).match.def && (!0 === t && (!0 !== n.getTest.call(a, r).match.newBlockMarker || !s.call(a, r, void 0, !0)) || !0 !== t && !s.call(a, r, void 0, i)); ) r++;\n return r;\n }\n function c(e) {\n var t = this.opts, i = this.el;\n return !this.isRTL || \"number\" != typeof e || t.greedy && \"\" === t.placeholder || !i || (e = this._valueGet().length - e) < 0 && (e = 0), \n e;\n }\n },\n 4713: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.determineTestTemplate = c, t.getDecisionTaker = o, t.getMaskTemplate = function(e, t, i, n, a) {\n var r = this, o = this.opts, u = this.maskset, f = o.greedy;\n a && o.greedy && (o.greedy = !1, r.maskset.tests = {});\n t = t || 0;\n var p, h, v, m, g = [], y = 0;\n do {\n if (!0 === e && u.validPositions[y]) h = (v = a && u.validPositions[y].match.optionality && void 0 === u.validPositions[y + 1] && (!0 === u.validPositions[y].generatedInput || u.validPositions[y].input == o.skipOptionalPartCharacter && y > 0) ? c.call(r, y, d.call(r, y, p, y - 1)) : u.validPositions[y]).match, \n p = v.locator.slice(), g.push(!0 === i ? v.input : !1 === i ? h.nativeDef : s.call(r, y, h)); else {\n h = (v = l.call(r, y, p, y - 1)).match, p = v.locator.slice();\n var k = !0 !== n && (!1 !== o.jitMasking ? o.jitMasking : h.jit);\n (m = (m && h.static && h.def !== o.groupSeparator && null === h.fn || u.validPositions[y - 1] && h.static && h.def !== o.groupSeparator && null === h.fn) && u.tests[y]) || !1 === k || void 0 === k || \"number\" == typeof k && isFinite(k) && k > y ? g.push(!1 === i ? h.nativeDef : s.call(r, g.length, h)) : m = !1;\n }\n y++;\n } while (!0 !== h.static || \"\" !== h.def || t > y);\n \"\" === g[g.length - 1] && g.pop();\n !1 === i && void 0 !== u.maskLength || (u.maskLength = y - 1);\n return o.greedy = f, g;\n }, t.getPlaceholder = s, t.getTest = u, t.getTestTemplate = l, t.getTests = d, t.isSubsetOf = f;\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n };\n function r(e, t) {\n var i = (null != e.alternation ? e.mloc[o(e)] : e.locator).join(\"\");\n if (\"\" !== i) for (;i.length < t; ) i += \"0\";\n return i;\n }\n function o(e) {\n var t = e.locator[e.alternation];\n return \"string\" == typeof t && t.length > 0 && (t = t.split(\",\")[0]), void 0 !== t ? t.toString() : \"\";\n }\n function s(e, t, i) {\n var n = this.opts, a = this.maskset;\n if (void 0 !== (t = t || u.call(this, e).match).placeholder || !0 === i) return \"function\" == typeof t.placeholder ? t.placeholder(n) : t.placeholder;\n if (!0 === t.static) {\n if (e > -1 && void 0 === a.validPositions[e]) {\n var r, o = d.call(this, e), s = [];\n if (o.length > 1 + (\"\" === o[o.length - 1].match.def ? 1 : 0)) for (var l = 0; l < o.length; l++) if (\"\" !== o[l].match.def && !0 !== o[l].match.optionality && !0 !== o[l].match.optionalQuantifier && (!0 === o[l].match.static || void 0 === r || !1 !== o[l].match.fn.test(r.match.def, a, e, !0, n)) && (s.push(o[l]), \n !0 === o[l].match.static && (r = o[l]), s.length > 1 && /[0-9a-bA-Z]/.test(s[0].match.def))) return n.placeholder.charAt(e % n.placeholder.length);\n }\n return t.def;\n }\n return n.placeholder.charAt(e % n.placeholder.length);\n }\n function l(e, t, i) {\n return this.maskset.validPositions[e] || c.call(this, e, d.call(this, e, t ? t.slice() : t, i));\n }\n function c(e, t) {\n var i = this.opts, n = 0, a = function(e, t) {\n var i = 0, n = !1;\n t.forEach((function(e) {\n e.match.optionality && (0 !== i && i !== e.match.optionality && (n = !0), (0 === i || i > e.match.optionality) && (i = e.match.optionality));\n })), i && (0 == e || 1 == t.length ? i = 0 : n || (i = 0));\n return i;\n }(e, t);\n e = e > 0 ? e - 1 : 0;\n var o, s, l, c = r(u.call(this, e));\n i.greedy && t.length > 1 && \"\" === t[t.length - 1].match.def && (n = 1);\n for (var f = 0; f < t.length - n; f++) {\n var d = t[f];\n o = r(d, c.length);\n var p = Math.abs(o - c);\n (void 0 === s || \"\" !== o && p < s || l && !i.greedy && l.match.optionality && l.match.optionality - a > 0 && \"master\" === l.match.newBlockMarker && (!d.match.optionality || d.match.optionality - a < 1 || !d.match.newBlockMarker) || l && !i.greedy && l.match.optionalQuantifier && !d.match.optionalQuantifier) && (s = p, \n l = d);\n }\n return l;\n }\n function u(e, t) {\n var i = this.maskset;\n return i.validPositions[e] ? i.validPositions[e] : (t || d.call(this, e))[0];\n }\n function f(e, t, i) {\n function n(e) {\n for (var t, i = [], n = -1, a = 0, r = e.length; a < r; a++) if (\"-\" === e.charAt(a)) for (t = e.charCodeAt(a + 1); ++n < t; ) i.push(String.fromCharCode(n)); else n = e.charCodeAt(a), \n i.push(e.charAt(a));\n return i.join(\"\");\n }\n return e.match.def === t.match.nativeDef || !(!(i.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && -1 !== n(t.match.fn.toString().replace(/[[\\]/]/g, \"\")).indexOf(n(e.match.fn.toString().replace(/[[\\]/]/g, \"\")));\n }\n function d(e, t, i) {\n var n, r, o = this, s = this.dependencyLib, l = this.maskset, u = this.opts, d = this.el, p = l.maskToken, h = t ? i : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, y = t ? t.join(\"\") : \"\";\n function k(t, i, r, s) {\n function c(r, s, p) {\n function v(e, t) {\n var i = 0 === t.matches.indexOf(e);\n return i || t.matches.every((function(n, a) {\n return !0 === n.isQuantifier ? i = v(e, t.matches[a - 1]) : Object.prototype.hasOwnProperty.call(n, \"matches\") && (i = v(e, n)), \n !i;\n })), i;\n }\n function x(e, t, i) {\n var n, a;\n if ((l.tests[e] || l.validPositions[e]) && (l.tests[e] || [ l.validPositions[e] ]).every((function(e, r) {\n if (e.mloc[t]) return n = e, !1;\n var o = void 0 !== i ? i : e.alternation, s = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;\n return (void 0 === a || s < a) && -1 !== s && (n = e, a = s), !0;\n })), n) {\n var r = n.locator[n.alternation];\n return (n.mloc[t] || n.mloc[r] || n.locator).slice((void 0 !== i ? i : n.alternation) + 1);\n }\n return void 0 !== i ? x(e, t) : void 0;\n }\n function P(e, t) {\n var i = e.alternation, n = void 0 === t || i === t.alternation && -1 === e.locator[i].toString().indexOf(t.locator[i]);\n if (!n && i > t.alternation) for (var a = t.alternation; a < i; a++) if (e.locator[a] !== t.locator[a]) {\n i = a, n = !0;\n break;\n }\n if (n) {\n e.mloc = e.mloc || {};\n var r = e.locator[i];\n if (void 0 !== r) {\n if (\"string\" == typeof r && (r = r.split(\",\")[0]), void 0 === e.mloc[r] && (e.mloc[r] = e.locator.slice()), \n void 0 !== t) {\n for (var o in t.mloc) \"string\" == typeof o && (o = o.split(\",\")[0]), void 0 === e.mloc[o] && (e.mloc[o] = t.mloc[o]);\n e.locator[i] = Object.keys(e.mloc).join(\",\");\n }\n return !0;\n }\n e.alternation = void 0;\n }\n return !1;\n }\n function w(e, t) {\n if (e.locator.length !== t.locator.length) return !1;\n for (var i = e.alternation + 1; i < e.locator.length; i++) if (e.locator[i] !== t.locator[i]) return !1;\n return !0;\n }\n if (h > e + u._maxTestPos) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + l.mask;\n if (h === e && void 0 === r.matches) {\n if (m.push({\n match: r,\n locator: s.reverse(),\n cd: y,\n mloc: {}\n }), !r.optionality || void 0 !== p || !(u.definitions && u.definitions[r.nativeDef] && u.definitions[r.nativeDef].optional || a.default.prototype.definitions[r.nativeDef] && a.default.prototype.definitions[r.nativeDef].optional)) return !0;\n g = !0, h = e;\n } else if (void 0 !== r.matches) {\n if (r.isGroup && p !== r) return function() {\n if (r = c(t.matches[t.matches.indexOf(r) + 1], s, p)) return !0;\n }();\n if (r.isOptional) return function() {\n var t = r, a = m.length;\n if (r = k(r, i, s, p), m.length > 0) {\n if (m.forEach((function(e, t) {\n t >= a && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);\n })), n = m[m.length - 1].match, void 0 !== p || !v(n, t)) return r;\n g = !0, h = e;\n }\n }();\n if (r.isAlternator) return function() {\n o.hasAlternator = !0;\n var n, a, v, y = r, k = [], b = m.slice(), S = s.length, M = !1, _ = i.length > 0 ? i.shift() : -1;\n if (-1 === _ || \"string\" == typeof _) {\n var O, E = h, T = i.slice(), j = [];\n if (\"string\" == typeof _) j = _.split(\",\"); else for (O = 0; O < y.matches.length; O++) j.push(O.toString());\n if (void 0 !== l.excludes[e]) {\n for (var A = j.slice(), D = 0, B = l.excludes[e].length; D < B; D++) {\n var C = l.excludes[e][D].toString().split(\":\");\n s.length == C[1] && j.splice(j.indexOf(C[0]), 1);\n }\n 0 === j.length && (delete l.excludes[e], j = A);\n }\n (!0 === u.keepStatic || isFinite(parseInt(u.keepStatic)) && E >= u.keepStatic) && (j = j.slice(0, 1));\n for (var R = 0; R < j.length; R++) {\n O = parseInt(j[R]), m = [], i = \"string\" == typeof _ && x(h, O, S) || T.slice();\n var L = y.matches[O];\n if (L && c(L, [ O ].concat(s), p)) r = !0; else if (0 === R && (M = !0), L && L.matches && L.matches.length > y.matches[0].matches.length) break;\n n = m.slice(), h = E, m = [];\n for (var F = 0; F < n.length; F++) {\n var I = n[F], N = !1;\n I.match.jit = I.match.jit || M, I.alternation = I.alternation || S, P(I);\n for (var V = 0; V < k.length; V++) {\n var G = k[V];\n if (\"string\" != typeof _ || void 0 !== I.alternation && j.includes(I.locator[I.alternation].toString())) {\n if (I.match.nativeDef === G.match.nativeDef) {\n N = !0, P(G, I);\n break;\n }\n if (f(I, G, u)) {\n P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I));\n break;\n }\n if (f(G, I, u)) {\n P(G, I);\n break;\n }\n if (v = G, !0 === (a = I).match.static && !0 !== v.match.static && v.match.fn.test(a.match.def, l, e, !1, u, !1)) {\n w(I, G) || void 0 !== d.inputmask.userOptions.keepStatic ? P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I)) : u.keepStatic = !0;\n break;\n }\n }\n }\n N || k.push(I);\n }\n }\n m = b.concat(k), h = e, g = m.length > 0, r = k.length > 0, i = T.slice();\n } else r = c(y.matches[_] || t.matches[_], [ _ ].concat(s), p);\n if (r) return !0;\n }();\n if (r.isQuantifier && p !== t.matches[t.matches.indexOf(r) - 1]) return function() {\n for (var a = r, o = !1, f = i.length > 0 ? i.shift() : 0; f < (isNaN(a.quantifier.max) ? f + 1 : a.quantifier.max) && h <= e; f++) {\n var d = t.matches[t.matches.indexOf(a) - 1];\n if (r = c(d, [ f ].concat(s), d)) {\n if (m.forEach((function(t, i) {\n (n = b(d, t.match) ? t.match : m[m.length - 1].match).optionalQuantifier = f >= a.quantifier.min, \n n.jit = (f + 1) * (d.matches.indexOf(n) + 1) > a.quantifier.jit, n.optionalQuantifier && v(n, d) && (g = !0, \n h = e, u.greedy && null == l.validPositions[e - 1] && f > a.quantifier.min && -1 != [ \"*\", \"+\" ].indexOf(a.quantifier.max) && (m.pop(), \n y = void 0), o = !0, r = !1), !o && n.jit && (l.jitOffset[e] = d.matches.length - d.matches.indexOf(n));\n })), o) break;\n return !0;\n }\n }\n }();\n if (r = k(r, i, s, p)) return !0;\n } else h++;\n }\n for (var p = i.length > 0 ? i.shift() : 0; p < t.matches.length; p++) if (!0 !== t.matches[p].isQuantifier) {\n var v = c(t.matches[p], [ p ].concat(r), s);\n if (v && h === e) return v;\n if (h > e) break;\n }\n }\n function b(e, t) {\n var i = -1 != e.matches.indexOf(t);\n return i || e.matches.forEach((function(e, n) {\n void 0 === e.matches || i || (i = b(e, t));\n })), i;\n }\n if (e > -1) {\n if (void 0 === t) {\n for (var x, P = e - 1; void 0 === (x = l.validPositions[P] || l.tests[P]) && P > -1; ) P--;\n void 0 !== x && P > -1 && (v = function(e, t) {\n var i, n = [];\n return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === u.keepStatic ? 0 === (n = c.call(o, e, t.slice()).locator.slice()).length && (n = t[0].locator.slice()) : t.forEach((function(e) {\n \"\" !== e.def && (0 === n.length ? (i = e.alternation, n = e.locator.slice()) : e.locator[i] && -1 === n[i].toString().indexOf(e.locator[i]) && (n[i] += \",\" + e.locator[i]));\n }))), n;\n }(P, x), y = v.join(\"\"), h = P);\n }\n if (l.tests[e] && l.tests[e][0].cd === y) return l.tests[e];\n for (var w = v.shift(); w < p.length; w++) {\n if (k(p[w], v, [ w ]) && h === e || h > e) break;\n }\n }\n return (0 === m.length || g) && m.push({\n match: {\n fn: null,\n static: !0,\n optionality: !1,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: y\n }), void 0 !== t && l.tests[e] ? r = s.extend(!0, [], m) : (l.tests[e] = s.extend(!0, [], m), \n r = l.tests[e]), m.forEach((function(e) {\n e.match.optionality = e.match.defOptionality || !1;\n })), r;\n }\n },\n 7215: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.alternate = s, t.checkAlternationMatch = function(e, t, i) {\n for (var n, a = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== i ? i.split(\",\") : [], s = 0; s < o.length; s++) -1 !== (n = e.indexOf(o[s])) && e.splice(n, 1);\n for (var l = 0; l < e.length; l++) if (a.includes(e[l])) {\n r = !0;\n break;\n }\n return r;\n }, t.handleRemove = function(e, t, i, o, l) {\n var c = this, u = this.maskset, f = this.opts;\n if ((f.numericInput || c.isRTL) && (t === a.keys.Backspace ? t = a.keys.Delete : t === a.keys.Delete && (t = a.keys.Backspace), \n c.isRTL)) {\n var d = i.end;\n i.end = i.begin, i.begin = d;\n }\n var p, h = r.getLastValidPosition.call(c, void 0, !0);\n i.end >= r.getBuffer.call(c).length && h >= i.end && (i.end = h + 1);\n t === a.keys.Backspace ? i.end - i.begin < 1 && (i.begin = r.seekPrevious.call(c, i.begin)) : t === a.keys.Delete && i.begin === i.end && (i.end = r.isMask.call(c, i.end, !0, !0) ? i.end + 1 : r.seekNext.call(c, i.end) + 1);\n if (!1 !== (p = v.call(c, i))) {\n if (!0 !== o && !1 !== f.keepStatic || null !== f.regex && -1 !== n.getTest.call(c, i.begin).match.def.indexOf(\"|\")) {\n var m = s.call(c, !0);\n if (m) {\n var g = void 0 !== m.caret ? m.caret : m.pos ? r.seekNext.call(c, m.pos.begin ? m.pos.begin : m.pos) : r.getLastValidPosition.call(c, -1, !0);\n (t !== a.keys.Delete || i.begin > g) && i.begin;\n }\n }\n !0 !== o && (u.p = t === a.keys.Delete ? i.begin + p : i.begin, u.p = r.determineNewCaretPosition.call(c, {\n begin: u.p,\n end: u.p\n }, !1, !1 === f.insertMode && t === a.keys.Backspace ? \"none\" : void 0).begin);\n }\n }, t.isComplete = c, t.isSelection = u, t.isValid = f, t.refreshFromBuffer = p, \n t.revalidateMask = v;\n var n = i(4713), a = i(2839), r = i(8711), o = i(6030);\n function s(e, t, i, a, o, l) {\n var c, u, d, p, h, v, m, g, y, k, b, x = this, P = this.dependencyLib, w = this.opts, S = x.maskset, M = P.extend(!0, [], S.validPositions), _ = P.extend(!0, {}, S.tests), O = !1, E = !1, T = void 0 !== o ? o : r.getLastValidPosition.call(x);\n if (l && (k = l.begin, b = l.end, l.begin > l.end && (k = l.end, b = l.begin)), \n -1 === T && void 0 === o) c = 0, u = (p = n.getTest.call(x, c)).alternation; else for (;T >= 0; T--) if ((d = S.validPositions[T]) && void 0 !== d.alternation) {\n if (T <= (e || 0) && p && p.locator[d.alternation] !== d.locator[d.alternation]) break;\n c = T, u = S.validPositions[c].alternation, p = d;\n }\n if (void 0 !== u) {\n m = parseInt(c), S.excludes[m] = S.excludes[m] || [], !0 !== e && S.excludes[m].push((0, \n n.getDecisionTaker)(p) + \":\" + p.alternation);\n var j = [], A = -1;\n for (h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) -1 === A && e <= h && void 0 !== t && (j.push(t), \n A = j.length - 1), (v = S.validPositions[h]) && !0 !== v.generatedInput && (void 0 === l || h < k || h >= b) && j.push(v.input), \n delete S.validPositions[h];\n for (-1 === A && void 0 !== t && (j.push(t), A = j.length - 1); void 0 !== S.excludes[m] && S.excludes[m].length < 10; ) {\n for (S.tests = {}, r.resetMaskSet.call(x, !0), O = !0, h = 0; h < j.length && (g = O.caret || r.getLastValidPosition.call(x, void 0, !0) + 1, \n y = j[h], O = f.call(x, g, y, !1, a, !0)); h++) h === A && (E = O), 1 == e && O && (E = {\n caretPos: h\n });\n if (O) break;\n if (r.resetMaskSet.call(x), p = n.getTest.call(x, m), S.validPositions = P.extend(!0, [], M), \n S.tests = P.extend(!0, {}, _), !S.excludes[m]) {\n E = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n var D = (0, n.getDecisionTaker)(p);\n if (-1 !== S.excludes[m].indexOf(D + \":\" + p.alternation)) {\n E = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n for (S.excludes[m].push(D + \":\" + p.alternation), h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) delete S.validPositions[h];\n }\n }\n return E && !1 === w.keepStatic || delete S.excludes[m], E;\n }\n function l(e, t, i) {\n var n = this.opts, r = this.maskset;\n switch (n.casing || t.casing) {\n case \"upper\":\n e = e.toUpperCase();\n break;\n\n case \"lower\":\n e = e.toLowerCase();\n break;\n\n case \"title\":\n var o = r.validPositions[i - 1];\n e = 0 === i || o && o.input === String.fromCharCode(a.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n break;\n\n default:\n if (\"function\" == typeof n.casing) {\n var s = Array.prototype.slice.call(arguments);\n s.push(r.validPositions), e = n.casing.apply(this, s);\n }\n }\n return e;\n }\n function c(e) {\n var t = this, i = this.opts, a = this.maskset;\n if (\"function\" == typeof i.isComplete) return i.isComplete(e, i);\n if (\"*\" !== i.repeat) {\n var o = !1, s = r.determineLastRequiredPosition.call(t, !0), l = r.seekPrevious.call(t, s.l);\n if (void 0 === s.def || s.def.newBlockMarker || s.def.optionality || s.def.optionalQuantifier) {\n o = !0;\n for (var c = 0; c <= l; c++) {\n var u = n.getTestTemplate.call(t, c).match;\n if (!0 !== u.static && void 0 === a.validPositions[c] && !0 !== u.optionality && !0 !== u.optionalQuantifier || !0 === u.static && e[c] !== n.getPlaceholder.call(t, c, u)) {\n o = !1;\n break;\n }\n }\n }\n return o;\n }\n }\n function u(e) {\n var t = this.opts.insertMode ? 0 : 1;\n return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;\n }\n function f(e, t, i, a, o, d, m) {\n var g = this, y = this.dependencyLib, k = this.opts, b = g.maskset;\n i = !0 === i;\n var x = e;\n function P(e) {\n if (void 0 !== e) {\n if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), \n e.remove.sort((function(e, t) {\n return g.isRTL ? e.pos - t.pos : t.pos - e.pos;\n })).forEach((function(e) {\n v.call(g, {\n begin: e,\n end: e + 1\n });\n })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), \n e.insert.sort((function(e, t) {\n return g.isRTL ? t.pos - e.pos : e.pos - t.pos;\n })).forEach((function(e) {\n \"\" !== e.c && f.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : a);\n })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {\n var t = e.refreshFromBuffer;\n p.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;\n }\n void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);\n }\n return e;\n }\n function w(t, i, o) {\n var s = !1;\n return n.getTests.call(g, t).every((function(c, f) {\n var d = c.match;\n if (r.getBuffer.call(g, !0), !1 !== (s = (!d.jit || void 0 !== b.validPositions[r.seekPrevious.call(g, t)]) && (null != d.fn ? d.fn.test(i, b, t, o, k, u.call(g, e)) : (i === d.def || i === k.skipOptionalPartCharacter) && \"\" !== d.def && {\n c: n.getPlaceholder.call(g, t, d, !0) || d.def,\n pos: t\n }))) {\n var p = void 0 !== s.c ? s.c : i, h = t;\n return p = p === k.skipOptionalPartCharacter && !0 === d.static ? n.getPlaceholder.call(g, t, d, !0) || d.def : p, \n !0 !== (s = P(s)) && void 0 !== s.pos && s.pos !== t && (h = s.pos), !0 !== s && void 0 === s.pos && void 0 === s.c ? !1 : (!1 === v.call(g, e, y.extend({}, c, {\n input: l.call(g, p, d, h)\n }), a, h) && (s = !1), !1);\n }\n return !0;\n })), s;\n }\n void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);\n var S = !0, M = y.extend(!0, {}, b.validPositions);\n if (!1 === k.keepStatic && void 0 !== b.excludes[x] && !0 !== o && !0 !== a) for (var _ = x; _ < (g.isRTL ? e.begin : e.end); _++) void 0 !== b.excludes[_] && (b.excludes[_] = void 0, \n delete b.tests[_]);\n if (\"function\" == typeof k.preValidation && !0 !== a && !0 !== d && (S = P(S = k.preValidation.call(g, r.getBuffer.call(g), x, t, u.call(g, e), k, b, e, i || o))), \n !0 === S) {\n if (S = w(x, t, i), (!i || !0 === a) && !1 === S && !0 !== d) {\n var O = b.validPositions[x];\n if (!O || !0 !== O.match.static || O.match.def !== t && t !== k.skipOptionalPartCharacter) {\n if (k.insertMode || void 0 === b.validPositions[r.seekNext.call(g, x)] || e.end > x) {\n var E = !1;\n if (b.jitOffset[x] && void 0 === b.validPositions[r.seekNext.call(g, x)] && !1 !== (S = f.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== o && (S.caret = x), \n E = !0), e.end > x && (b.validPositions[x] = void 0), !E && !r.isMask.call(g, x, k.keepStatic && 0 === x)) for (var T = x + 1, j = r.seekNext.call(g, x, !1, 0 !== x); T <= j; T++) if (!1 !== (S = w(T, t, i))) {\n S = h.call(g, x, void 0 !== S.pos ? S.pos : T) || S, x = T;\n break;\n }\n }\n } else S = {\n caret: r.seekNext.call(g, x)\n };\n }\n g.hasAlternator && !0 !== o && !i && (!1 === S && k.keepStatic && (c.call(g, r.getBuffer.call(g)) || 0 === x) ? S = s.call(g, x, t, i, a, void 0, e) : (u.call(g, e) && b.tests[x] && b.tests[x].length > 1 && k.keepStatic || 1 == S && !0 !== k.numericInput && b.tests[x] && b.tests[x].length > 1 && r.getLastValidPosition.call(g, void 0, !0) > x) && (S = s.call(g, !0))), \n !0 === S && (S = {\n pos: x\n });\n }\n if (\"function\" == typeof k.postValidation && !0 !== a && !0 !== d) {\n var A = k.postValidation.call(g, r.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, k, b, i, m);\n void 0 !== A && (S = !0 === A ? S : A);\n }\n S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === d ? (r.resetMaskSet.call(g, !0), \n b.validPositions = y.extend(!0, [], M)) : h.call(g, void 0, x, !0);\n var D = P(S);\n void 0 !== g.maxLength && (r.getBuffer.call(g).length > g.maxLength && !a && (r.resetMaskSet.call(g, !0), \n b.validPositions = y.extend(!0, [], M), D = !1));\n return D;\n }\n function d(e, t, i) {\n for (var a = this.maskset, r = !1, o = n.getTests.call(this, e), s = 0; s < o.length; s++) {\n if (o[s].match && (o[s].match.nativeDef === t.match[i.shiftPositions ? \"def\" : \"nativeDef\"] && (!i.shiftPositions || !t.match.static) || o[s].match.nativeDef === t.match.nativeDef || i.regex && !o[s].match.static && o[s].match.fn.test(t.input, a, e, !1, i))) {\n r = !0;\n break;\n }\n if (o[s].match && o[s].match.def === t.match.nativeDef) {\n r = void 0;\n break;\n }\n }\n return !1 === r && void 0 !== a.jitOffset[e] && (r = d.call(this, e + a.jitOffset[e], t, i)), \n r;\n }\n function p(e, t, i) {\n var n, a, s = this, l = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, d = s.isRTL ? i.slice().reverse() : i;\n if (c.skipOptionalPartCharacter = \"\", !0 === e) r.resetMaskSet.call(s), l.tests = {}, \n e = 0, t = i.length, a = r.determineNewCaretPosition.call(s, {\n begin: 0,\n end: 0\n }, !1).begin; else {\n for (n = e; n < t; n++) delete l.validPositions[n];\n a = e;\n }\n var p = new u.Event(\"keypress\");\n for (n = e; n < t; n++) {\n p.key = d[n].toString(), s.ignorable = !1;\n var h = o.EventHandlers.keypressEvent.call(s, p, !0, !1, !1, a);\n !1 !== h && void 0 !== h && (a = h.forwardPosition);\n }\n c.skipOptionalPartCharacter = f;\n }\n function h(e, t, i) {\n var a = this, o = this.maskset, s = this.dependencyLib;\n if (void 0 === e) for (e = t - 1; e > 0 && !o.validPositions[e]; e--) ;\n for (var l = e; l < t; l++) {\n if (void 0 === o.validPositions[l] && !r.isMask.call(a, l, !1)) if (0 == l ? n.getTest.call(a, l) : o.validPositions[l - 1]) {\n var c = n.getTests.call(a, l).slice();\n \"\" === c[c.length - 1].match.def && c.pop();\n var u, d = n.determineTestTemplate.call(a, l, c);\n if (d && (!0 !== d.match.jit || \"master\" === d.match.newBlockMarker && (u = o.validPositions[l + 1]) && !0 === u.match.optionalQuantifier) && ((d = s.extend({}, d, {\n input: n.getPlaceholder.call(a, l, d.match, !0) || d.match.def\n })).generatedInput = !0, v.call(a, l, d, !0), !0 !== i)) {\n var p = o.validPositions[t].input;\n return o.validPositions[t] = void 0, f.call(a, t, p, !0, !0);\n }\n }\n }\n }\n function v(e, t, i, a) {\n var o = this, s = this.maskset, l = this.opts, c = this.dependencyLib;\n function u(e, t, i) {\n var n = t[e];\n if (void 0 !== n && !0 === n.match.static && !0 !== n.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {\n var a = i.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = i.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];\n return a && r;\n }\n return !1;\n }\n var p = 0, h = void 0 !== e.begin ? e.begin : e, v = void 0 !== e.end ? e.end : e, m = !0;\n if (e.begin > e.end && (h = e.end, v = e.begin), a = void 0 !== a ? a : h, void 0 === i && (h !== v || l.insertMode && void 0 !== s.validPositions[a] || void 0 === t || t.match.optionalQuantifier || t.match.optionality)) {\n var g, y = c.extend(!0, {}, s.validPositions), k = r.getLastValidPosition.call(o, void 0, !0);\n for (s.p = h, g = k; g >= h; g--) delete s.validPositions[g], void 0 === t && delete s.tests[g + 1];\n var b, x, P = a, w = P;\n for (t && (s.validPositions[a] = c.extend(!0, {}, t), w++, P++), g = t ? v : v - 1; g <= k; g++) {\n if (void 0 !== (b = y[g]) && !0 !== b.generatedInput && (g >= v || g >= h && u(g, y, {\n begin: h,\n end: v\n }))) {\n for (;\"\" !== n.getTest.call(o, w).match.def; ) {\n if (!1 !== (x = d.call(o, w, b, l)) || \"+\" === b.match.def) {\n \"+\" === b.match.def && r.getBuffer.call(o, !0);\n var S = f.call(o, w, b.input, \"+\" !== b.match.def, !0);\n if (m = !1 !== S, P = (S.pos || w) + 1, !m && x) break;\n } else m = !1;\n if (m) {\n void 0 === t && b.match.static && g === e.begin && p++;\n break;\n }\n if (!m && r.getBuffer.call(o), w > s.maskLength) break;\n w++;\n }\n \"\" == n.getTest.call(o, w).match.def && (m = !1), w = P;\n }\n if (!m) break;\n }\n if (!m) return s.validPositions = c.extend(!0, [], y), r.resetMaskSet.call(o, !0), \n !1;\n } else t && n.getTest.call(o, a).match.cd === t.match.cd && (s.validPositions[a] = c.extend(!0, {}, t));\n return r.resetMaskSet.call(o, !0), p;\n }\n }\n }, t = {};\n function i(n) {\n var a = t[n];\n if (void 0 !== a) return a.exports;\n var r = t[n] = {\n exports: {}\n };\n return e[n](r, r.exports, i), r.exports;\n }\n var n = {};\n return function() {\n var e, t = n;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0, i(7149), i(3194), i(9302), i(4013), i(3851), i(219), i(207), \n i(5296);\n var a = ((e = i(2394)) && e.__esModule ? e : {\n default: e\n }).default;\n t.default = a;\n }(), n;\n }();\n}));","/*!\n * The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)\n * Copyright (c) 2016 Edson Hilios\n * \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.\n */\n(function(factory) {\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n define([ \"jquery\" ], factory);\n } else {\n factory(jQuery);\n }\n})(function($) {\n \"use strict\";\n var instances = [], matchers = [], defaultOptions = {\n precision: 100,\n elapse: false,\n defer: false\n };\n matchers.push(/^[0-9]*$/.source);\n matchers.push(/([0-9]{1,2}\\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers.push(/[0-9]{4}([\\/\\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers = new RegExp(matchers.join(\"|\"));\n function parseDateString(dateString) {\n if (dateString instanceof Date) {\n return dateString;\n }\n if (String(dateString).match(matchers)) {\n if (String(dateString).match(/^[0-9]*$/)) {\n dateString = Number(dateString);\n }\n if (String(dateString).match(/\\-/)) {\n dateString = String(dateString).replace(/\\-/g, \"/\");\n }\n return new Date(dateString);\n } else {\n throw new Error(\"Couldn't cast `\" + dateString + \"` to a date object.\");\n }\n }\n var DIRECTIVE_KEY_MAP = {\n Y: \"years\",\n m: \"months\",\n n: \"daysToMonth\",\n d: \"daysToWeek\",\n w: \"weeks\",\n W: \"weeksToMonth\",\n H: \"hours\",\n M: \"minutes\",\n S: \"seconds\",\n D: \"totalDays\",\n I: \"totalHours\",\n N: \"totalMinutes\",\n T: \"totalSeconds\"\n };\n function escapedRegExp(str) {\n var sanitize = str.toString().replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n return new RegExp(sanitize);\n }\n function strftime(offsetObject) {\n return function(format) {\n var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);\n if (directives) {\n for (var i = 0, len = directives.length; i < len; ++i) {\n var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = escapedRegExp(directive[0]), modifier = directive[1] || \"\", plural = directive[3] || \"\", value = null;\n directive = directive[2];\n if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {\n value = DIRECTIVE_KEY_MAP[directive];\n value = Number(offsetObject[value]);\n }\n if (value !== null) {\n if (modifier === \"!\") {\n value = pluralize(plural, value);\n }\n if (modifier === \"\") {\n if (value < 10) {\n value = \"0\" + value.toString();\n }\n }\n format = format.replace(regexp, value.toString());\n }\n }\n }\n format = format.replace(/%%/, \"%\");\n return format;\n };\n }\n function pluralize(format, count) {\n var plural = \"s\", singular = \"\";\n if (format) {\n format = format.replace(/(:|;|\\s)/gi, \"\").split(/\\,/);\n if (format.length === 1) {\n plural = format[0];\n } else {\n singular = format[0];\n plural = format[1];\n }\n }\n if (Math.abs(count) > 1) {\n return plural;\n } else {\n return singular;\n }\n }\n var Countdown = function(el, finalDate, options) {\n this.el = el;\n this.$el = $(el);\n this.interval = null;\n this.offset = {};\n this.options = $.extend({}, defaultOptions);\n this.instanceNumber = instances.length;\n instances.push(this);\n this.$el.data(\"countdown-instance\", this.instanceNumber);\n if (options) {\n if (typeof options === \"function\") {\n this.$el.on(\"update.countdown\", options);\n this.$el.on(\"stoped.countdown\", options);\n this.$el.on(\"finish.countdown\", options);\n } else {\n this.options = $.extend({}, defaultOptions, options);\n }\n }\n this.setFinalDate(finalDate);\n if (this.options.defer === false) {\n this.start();\n }\n };\n $.extend(Countdown.prototype, {\n start: function() {\n if (this.interval !== null) {\n clearInterval(this.interval);\n }\n var self = this;\n this.update();\n this.interval = setInterval(function() {\n self.update.call(self);\n }, this.options.precision);\n },\n stop: function() {\n clearInterval(this.interval);\n this.interval = null;\n this.dispatchEvent(\"stoped\");\n },\n toggle: function() {\n if (this.interval) {\n this.stop();\n } else {\n this.start();\n }\n },\n pause: function() {\n this.stop();\n },\n resume: function() {\n this.start();\n },\n remove: function() {\n this.stop.call(this);\n instances[this.instanceNumber] = null;\n delete this.$el.data().countdownInstance;\n },\n setFinalDate: function(value) {\n this.finalDate = parseDateString(value);\n },\n update: function() {\n if (this.$el.closest(\"html\").length === 0) {\n this.remove();\n return;\n }\n var hasEventsAttached = $._data(this.el, \"events\") !== undefined, now = new Date(), newTotalSecsLeft;\n newTotalSecsLeft = this.finalDate.getTime() - now.getTime();\n newTotalSecsLeft = Math.ceil(newTotalSecsLeft / 1e3);\n newTotalSecsLeft = !this.options.elapse && newTotalSecsLeft < 0 ? 0 : Math.abs(newTotalSecsLeft);\n if (this.totalSecsLeft === newTotalSecsLeft || !hasEventsAttached) {\n return;\n } else {\n this.totalSecsLeft = newTotalSecsLeft;\n }\n this.elapsed = now >= this.finalDate;\n this.offset = {\n seconds: this.totalSecsLeft % 60,\n minutes: Math.floor(this.totalSecsLeft / 60) % 60,\n hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,\n days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368),\n weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),\n weeksToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7) % 4,\n months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368),\n years: Math.abs(this.finalDate.getFullYear() - now.getFullYear()),\n totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),\n totalHours: Math.floor(this.totalSecsLeft / 60 / 60),\n totalMinutes: Math.floor(this.totalSecsLeft / 60),\n totalSeconds: this.totalSecsLeft\n };\n if (!this.options.elapse && this.totalSecsLeft === 0) {\n this.stop();\n this.dispatchEvent(\"finish\");\n } else {\n this.dispatchEvent(\"update\");\n }\n },\n dispatchEvent: function(eventName) {\n var event = $.Event(eventName + \".countdown\");\n event.finalDate = this.finalDate;\n event.elapsed = this.elapsed;\n event.offset = $.extend({}, this.offset);\n event.strftime = strftime(this.offset);\n this.$el.trigger(event);\n }\n });\n $.fn.countdown = function() {\n var argumentsArray = Array.prototype.slice.call(arguments, 0);\n return this.each(function() {\n var instanceNumber = $(this).data(\"countdown-instance\");\n if (instanceNumber !== undefined) {\n var instance = instances[instanceNumber], method = argumentsArray[0];\n if (Countdown.prototype.hasOwnProperty(method)) {\n instance[method].apply(instance, argumentsArray.slice(1));\n } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {\n instance.setFinalDate.call(instance, method);\n instance.start();\n } else {\n $.error(\"Method %s does not exist on jQuery.countdown\".replace(/\\%s/gi, method));\n }\n } else {\n new Countdown(this, argumentsArray[0], argumentsArray[1]);\n }\n });\n };\n});","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\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 trac-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 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 version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\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\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\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\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\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}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\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\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\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: https://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] 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\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: 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\tneedsContext: 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\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\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// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\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\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 = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( 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 9 only\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\tpush.call( results, 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 9 only\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\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, 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 ] ) && context.getElementsByClassName ) {\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 ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\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 ) || rleadingCombinator.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\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\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 = jQuery.escapeSelector( nid );\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( rtrimCSS, \"$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\n\t\t// (see https://github.com/jquery/sizzle/issues/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 jQuery selector module\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 * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.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\telem.isDisabled !== !disabled &&\n\t\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 jQuery selector 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/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar 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\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\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\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\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\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\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 = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = 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\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\" \" +\n\t\t\t\"\" +\n\t\t\t\" \";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( 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\tfind.contains( 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\tfind.contains( 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.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ 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\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\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 find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.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 jQuery.contains( context, elem );\n};\n\n\nfind.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 (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.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 */\njQuery.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\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, 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\tsplice.call( results, 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\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\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\tATTR: 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 ] || match[ 5 ] || \"\" )\n\t\t\t\t.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\tCHILD: 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\tfind.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\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: 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\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = 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 nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: 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, 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\tnodeName( node, 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\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ 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\touterCache[ 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\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ 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\tnodeName( node, 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\t\t\t\t\t\t\t\t\t\t\touterCache[ 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\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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\tfind.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 jQuery 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.call( 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\tnot: 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( rtrimCSS, \"$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\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/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\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: 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\tfind.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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\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\tempty: function( elem ) {\n\n\t\t\t// https://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\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// 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\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\nfunction tokenize( 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 = rleadingCombinator.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( rtrimCSS, \" \" )\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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\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, 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\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ 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\touterCache[ 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\tfind( 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, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\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\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\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.call( 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.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\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\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\n\t\t\t// (see https://github.com/jquery/sizzle/issues/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\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$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: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\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\tpush.call( results, 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\tjQuery.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\nfunction compile( 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( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\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 jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( 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\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 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 ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\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// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\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\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\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\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 to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-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 jQuery#find\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// 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.error );\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 error, 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.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = 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\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\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,\n\t\t\terror.stack, asyncError );\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 trac-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 (trac-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 trac-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 (trac-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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-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 = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \" \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-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 or other required elements.\n\tthead: [ 1, \"\" ],\n\tcol: [ 2, \"\" ],\n\ttr: [ 2, \"\" ],\n\ttd: [ 3, \"\" ],\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, \"\", \" \" ];\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 (trac-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 (trac-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\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 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 (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-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\", true );\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, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\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 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\tif ( !saved ) {\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\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\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\treturn result;\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\n\t\t\t\t// the 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 ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\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 (trac-504, trac-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\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\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\tvar attaches;\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, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\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},\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\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\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 = /