{"version":3,"file":"js/chunk-vendors.6735bcdb.js","mappings":"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","sources":["webpack://web/./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://web/./node_modules/ansi-to-html/lib/ansi_to_html.js","webpack://web/./node_modules/axios/index.js","webpack://web/./node_modules/axios/lib/adapters/xhr.js","webpack://web/./node_modules/axios/lib/axios.js","webpack://web/./node_modules/axios/lib/cancel/CancelToken.js","webpack://web/./node_modules/axios/lib/cancel/CanceledError.js","webpack://web/./node_modules/axios/lib/cancel/isCancel.js","webpack://web/./node_modules/axios/lib/core/Axios.js","webpack://web/./node_modules/axios/lib/core/AxiosError.js","webpack://web/./node_modules/axios/lib/core/InterceptorManager.js","webpack://web/./node_modules/axios/lib/core/buildFullPath.js","webpack://web/./node_modules/axios/lib/core/dispatchRequest.js","webpack://web/./node_modules/axios/lib/core/mergeConfig.js","webpack://web/./node_modules/axios/lib/core/settle.js","webpack://web/./node_modules/axios/lib/core/transformData.js","webpack://web/./node_modules/axios/lib/defaults/index.js","webpack://web/./node_modules/axios/lib/defaults/transitional.js","webpack://web/./node_modules/axios/lib/env/classes/FormData.js","webpack://web/./node_modules/axios/lib/env/data.js","webpack://web/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://web/./node_modules/axios/lib/helpers/bind.js","webpack://web/./node_modules/axios/lib/helpers/buildURL.js","webpack://web/./node_modules/axios/lib/helpers/combineURLs.js","webpack://web/./node_modules/axios/lib/helpers/cookies.js","webpack://web/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://web/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://web/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://web/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://web/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://web/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://web/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://web/./node_modules/axios/lib/helpers/spread.js","webpack://web/./node_modules/axios/lib/helpers/toFormData.js","webpack://web/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://web/./node_modules/axios/lib/helpers/validator.js","webpack://web/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://web/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://web/./node_modules/axios/lib/platform/browser/index.js","webpack://web/./node_modules/axios/lib/platform/index.js","webpack://web/./node_modules/axios/lib/utils.js","webpack://web/./node_modules/codemirror/addon/display/placeholder.js","webpack://web/./node_modules/codemirror/addon/lint/json-lint.js","webpack://web/./node_modules/codemirror/addon/mode/multiplex.js","webpack://web/./node_modules/codemirror/addon/mode/overlay.js","webpack://web/./node_modules/codemirror/addon/mode/simple.js","webpack://web/./node_modules/codemirror/lib/codemirror.js","webpack://web/./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack://web/./node_modules/codemirror/mode/css/css.js","webpack://web/./node_modules/codemirror/mode/handlebars/handlebars.js","webpack://web/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://web/./node_modules/codemirror/mode/javascript/javascript.js","webpack://web/./node_modules/codemirror/mode/pug/pug.js","webpack://web/./node_modules/codemirror/mode/sass/sass.js","webpack://web/./node_modules/codemirror/mode/stylus/stylus.js","webpack://web/./node_modules/codemirror/mode/vue/vue.js","webpack://web/./node_modules/codemirror/mode/xml/xml.js","webpack://web/./node_modules/core-js/internals/a-callable.js","webpack://web/./node_modules/core-js/internals/a-possible-prototype.js","webpack://web/./node_modules/core-js/internals/an-object.js","webpack://web/./node_modules/core-js/internals/array-includes.js","webpack://web/./node_modules/core-js/internals/classof-raw.js","webpack://web/./node_modules/core-js/internals/classof.js","webpack://web/./node_modules/core-js/internals/clear-error-stack.js","webpack://web/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://web/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://web/./node_modules/core-js/internals/create-property-descriptor.js","webpack://web/./node_modules/core-js/internals/define-built-in.js","webpack://web/./node_modules/core-js/internals/define-global-property.js","webpack://web/./node_modules/core-js/internals/descriptors.js","webpack://web/./node_modules/core-js/internals/document-create-element.js","webpack://web/./node_modules/core-js/internals/engine-user-agent.js","webpack://web/./node_modules/core-js/internals/engine-v8-version.js","webpack://web/./node_modules/core-js/internals/enum-bug-keys.js","webpack://web/./node_modules/core-js/internals/error-stack-installable.js","webpack://web/./node_modules/core-js/internals/export.js","webpack://web/./node_modules/core-js/internals/fails.js","webpack://web/./node_modules/core-js/internals/function-apply.js","webpack://web/./node_modules/core-js/internals/function-bind-native.js","webpack://web/./node_modules/core-js/internals/function-call.js","webpack://web/./node_modules/core-js/internals/function-name.js","webpack://web/./node_modules/core-js/internals/function-uncurry-this.js","webpack://web/./node_modules/core-js/internals/get-built-in.js","webpack://web/./node_modules/core-js/internals/get-method.js","webpack://web/./node_modules/core-js/internals/global.js","webpack://web/./node_modules/core-js/internals/has-own-property.js","webpack://web/./node_modules/core-js/internals/hidden-keys.js","webpack://web/./node_modules/core-js/internals/ie8-dom-define.js","webpack://web/./node_modules/core-js/internals/indexed-object.js","webpack://web/./node_modules/core-js/internals/inherit-if-required.js","webpack://web/./node_modules/core-js/internals/inspect-source.js","webpack://web/./node_modules/core-js/internals/install-error-cause.js","webpack://web/./node_modules/core-js/internals/internal-state.js","webpack://web/./node_modules/core-js/internals/is-callable.js","webpack://web/./node_modules/core-js/internals/is-forced.js","webpack://web/./node_modules/core-js/internals/is-object.js","webpack://web/./node_modules/core-js/internals/is-pure.js","webpack://web/./node_modules/core-js/internals/is-symbol.js","webpack://web/./node_modules/core-js/internals/length-of-array-like.js","webpack://web/./node_modules/core-js/internals/make-built-in.js","webpack://web/./node_modules/core-js/internals/math-trunc.js","webpack://web/./node_modules/core-js/internals/native-symbol.js","webpack://web/./node_modules/core-js/internals/native-weak-map.js","webpack://web/./node_modules/core-js/internals/normalize-string-argument.js","webpack://web/./node_modules/core-js/internals/object-define-property.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://web/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-keys-internal.js","webpack://web/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://web/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://web/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://web/./node_modules/core-js/internals/own-keys.js","webpack://web/./node_modules/core-js/internals/proxy-accessor.js","webpack://web/./node_modules/core-js/internals/require-object-coercible.js","webpack://web/./node_modules/core-js/internals/shared-key.js","webpack://web/./node_modules/core-js/internals/shared-store.js","webpack://web/./node_modules/core-js/internals/shared.js","webpack://web/./node_modules/core-js/internals/to-absolute-index.js","webpack://web/./node_modules/core-js/internals/to-indexed-object.js","webpack://web/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://web/./node_modules/core-js/internals/to-length.js","webpack://web/./node_modules/core-js/internals/to-object.js","webpack://web/./node_modules/core-js/internals/to-primitive.js","webpack://web/./node_modules/core-js/internals/to-property-key.js","webpack://web/./node_modules/core-js/internals/to-string-tag-support.js","webpack://web/./node_modules/core-js/internals/to-string.js","webpack://web/./node_modules/core-js/internals/try-to-string.js","webpack://web/./node_modules/core-js/internals/uid.js","webpack://web/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://web/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://web/./node_modules/core-js/internals/well-known-symbol.js","webpack://web/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://web/./node_modules/core-js/modules/es.error.cause.js","webpack://web/./node_modules/entities/lib/decode.js","webpack://web/./node_modules/entities/lib/decode_codepoint.js","webpack://web/./node_modules/entities/lib/encode.js","webpack://web/./node_modules/entities/lib/index.js","webpack://web/./node_modules/form-data/lib/browser.js","webpack://web/./node_modules/moment/locale/af.js","webpack://web/./node_modules/moment/locale/ar-dz.js","webpack://web/./node_modules/moment/locale/ar-kw.js","webpack://web/./node_modules/moment/locale/ar-ly.js","webpack://web/./node_modules/moment/locale/ar-ma.js","webpack://web/./node_modules/moment/locale/ar-sa.js","webpack://web/./node_modules/moment/locale/ar-tn.js","webpack://web/./node_modules/moment/locale/ar.js","webpack://web/./node_modules/moment/locale/az.js","webpack://web/./node_modules/moment/locale/be.js","webpack://web/./node_modules/moment/locale/bg.js","webpack://web/./node_modules/moment/locale/bm.js","webpack://web/./node_modules/moment/locale/bn-bd.js","webpack://web/./node_modules/moment/locale/bn.js","webpack://web/./node_modules/moment/locale/bo.js","webpack://web/./node_modules/moment/locale/br.js","webpack://web/./node_modules/moment/locale/bs.js","webpack://web/./node_modules/moment/locale/ca.js","webpack://web/./node_modules/moment/locale/cs.js","webpack://web/./node_modules/moment/locale/cv.js","webpack://web/./node_modules/moment/locale/cy.js","webpack://web/./node_modules/moment/locale/da.js","webpack://web/./node_modules/moment/locale/de-at.js","webpack://web/./node_modules/moment/locale/de-ch.js","webpack://web/./node_modules/moment/locale/de.js","webpack://web/./node_modules/moment/locale/dv.js","webpack://web/./node_modules/moment/locale/el.js","webpack://web/./node_modules/moment/locale/en-au.js","webpack://web/./node_modules/moment/locale/en-ca.js","webpack://web/./node_modules/moment/locale/en-gb.js","webpack://web/./node_modules/moment/locale/en-ie.js","webpack://web/./node_modules/moment/locale/en-il.js","webpack://web/./node_modules/moment/locale/en-in.js","webpack://web/./node_modules/moment/locale/en-nz.js","webpack://web/./node_modules/moment/locale/en-sg.js","webpack://web/./node_modules/moment/locale/eo.js","webpack://web/./node_modules/moment/locale/es-do.js","webpack://web/./node_modules/moment/locale/es-mx.js","webpack://web/./node_modules/moment/locale/es-us.js","webpack://web/./node_modules/moment/locale/es.js","webpack://web/./node_modules/moment/locale/et.js","webpack://web/./node_modules/moment/locale/eu.js","webpack://web/./node_modules/moment/locale/fa.js","webpack://web/./node_modules/moment/locale/fi.js","webpack://web/./node_modules/moment/locale/fil.js","webpack://web/./node_modules/moment/locale/fo.js","webpack://web/./node_modules/moment/locale/fr-ca.js","webpack://web/./node_modules/moment/locale/fr-ch.js","webpack://web/./node_modules/moment/locale/fr.js","webpack://web/./node_modules/moment/locale/fy.js","webpack://web/./node_modules/moment/locale/ga.js","webpack://web/./node_modules/moment/locale/gd.js","webpack://web/./node_modules/moment/locale/gl.js","webpack://web/./node_modules/moment/locale/gom-deva.js","webpack://web/./node_modules/moment/locale/gom-latn.js","webpack://web/./node_modules/moment/locale/gu.js","webpack://web/./node_modules/moment/locale/he.js","webpack://web/./node_modules/moment/locale/hi.js","webpack://web/./node_modules/moment/locale/hr.js","webpack://web/./node_modules/moment/locale/hu.js","webpack://web/./node_modules/moment/locale/hy-am.js","webpack://web/./node_modules/moment/locale/id.js","webpack://web/./node_modules/moment/locale/is.js","webpack://web/./node_modules/moment/locale/it-ch.js","webpack://web/./node_modules/moment/locale/it.js","webpack://web/./node_modules/moment/locale/ja.js","webpack://web/./node_modules/moment/locale/jv.js","webpack://web/./node_modules/moment/locale/ka.js","webpack://web/./node_modules/moment/locale/kk.js","webpack://web/./node_modules/moment/locale/km.js","webpack://web/./node_modules/moment/locale/kn.js","webpack://web/./node_modules/moment/locale/ko.js","webpack://web/./node_modules/moment/locale/ku.js","webpack://web/./node_modules/moment/locale/ky.js","webpack://web/./node_modules/moment/locale/lb.js","webpack://web/./node_modules/moment/locale/lo.js","webpack://web/./node_modules/moment/locale/lt.js","webpack://web/./node_modules/moment/locale/lv.js","webpack://web/./node_modules/moment/locale/me.js","webpack://web/./node_modules/moment/locale/mi.js","webpack://web/./node_modules/moment/locale/mk.js","webpack://web/./node_modules/moment/locale/ml.js","webpack://web/./node_modules/moment/locale/mn.js","webpack://web/./node_modules/moment/locale/mr.js","webpack://web/./node_modules/moment/locale/ms-my.js","webpack://web/./node_modules/moment/locale/ms.js","webpack://web/./node_modules/moment/locale/mt.js","webpack://web/./node_modules/moment/locale/my.js","webpack://web/./node_modules/moment/locale/nb.js","webpack://web/./node_modules/moment/locale/ne.js","webpack://web/./node_modules/moment/locale/nl-be.js","webpack://web/./node_modules/moment/locale/nl.js","webpack://web/./node_modules/moment/locale/nn.js","webpack://web/./node_modules/moment/locale/oc-lnc.js","webpack://web/./node_modules/moment/locale/pa-in.js","webpack://web/./node_modules/moment/locale/pl.js","webpack://web/./node_modules/moment/locale/pt-br.js","webpack://web/./node_modules/moment/locale/pt.js","webpack://web/./node_modules/moment/locale/ro.js","webpack://web/./node_modules/moment/locale/ru.js","webpack://web/./node_modules/moment/locale/sd.js","webpack://web/./node_modules/moment/locale/se.js","webpack://web/./node_modules/moment/locale/si.js","webpack://web/./node_modules/moment/locale/sk.js","webpack://web/./node_modules/moment/locale/sl.js","webpack://web/./node_modules/moment/locale/sq.js","webpack://web/./node_modules/moment/locale/sr-cyrl.js","webpack://web/./node_modules/moment/locale/sr.js","webpack://web/./node_modules/moment/locale/ss.js","webpack://web/./node_modules/moment/locale/sv.js","webpack://web/./node_modules/moment/locale/sw.js","webpack://web/./node_modules/moment/locale/ta.js","webpack://web/./node_modules/moment/locale/te.js","webpack://web/./node_modules/moment/locale/tet.js","webpack://web/./node_modules/moment/locale/tg.js","webpack://web/./node_modules/moment/locale/th.js","webpack://web/./node_modules/moment/locale/tk.js","webpack://web/./node_modules/moment/locale/tl-ph.js","webpack://web/./node_modules/moment/locale/tlh.js","webpack://web/./node_modules/moment/locale/tr.js","webpack://web/./node_modules/moment/locale/tzl.js","webpack://web/./node_modules/moment/locale/tzm-latn.js","webpack://web/./node_modules/moment/locale/tzm.js","webpack://web/./node_modules/moment/locale/ug-cn.js","webpack://web/./node_modules/moment/locale/uk.js","webpack://web/./node_modules/moment/locale/ur.js","webpack://web/./node_modules/moment/locale/uz-latn.js","webpack://web/./node_modules/moment/locale/uz.js","webpack://web/./node_modules/moment/locale/vi.js","webpack://web/./node_modules/moment/locale/x-pseudo.js","webpack://web/./node_modules/moment/locale/yo.js","webpack://web/./node_modules/moment/locale/zh-cn.js","webpack://web/./node_modules/moment/locale/zh-hk.js","webpack://web/./node_modules/moment/locale/zh-mo.js","webpack://web/./node_modules/moment/locale/zh-tw.js","webpack://web/./node_modules/moment/moment.js","webpack://web/./node_modules/sortablejs/modular/sortable.esm.js","webpack://web/../../../src/mixins/transitionable/index.ts","webpack://web/../../../src/components/VAlert/VAlert.ts","webpack://web/../../../src/components/VApp/VApp.ts","webpack://web/../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack://web/../../../src/components/VAutocomplete/VAutocomplete.ts","webpack://web/../../../src/components/VAvatar/VAvatar.ts","webpack://web/../../../src/components/VBottomSheet/VBottomSheet.ts","webpack://web/../../../src/components/VProgressCircular/index.ts","webpack://web/../../../src/components/VBtn/VBtn.ts","webpack://web/../../../src/components/VBtn/index.ts","webpack://web/../../../src/components/VCard/VCard.ts","webpack://web/../../../src/components/VCard/index.ts","webpack://web/../../../src/components/VCheckbox/VCheckbox.ts","webpack://web/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://web/../../../src/components/VChip/VChip.ts","webpack://web/../../../src/components/VChip/index.ts","webpack://web/../../../src/components/VChipGroup/VChipGroup.ts","webpack://web/../../../src/components/VData/VData.ts","webpack://web/../../../src/components/VDataIterator/VDataFooter.ts","webpack://web/../../../src/components/VDataIterator/VDataIterator.ts","webpack://web/../../../../src/components/VDataTable/mixins/header.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack://web/../../src/util/dedupeModelListeners.ts","webpack://web/../../src/util/rebuildFunctionalSlots.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeader.ts","webpack://web/../../../src/components/VDataTable/Row.ts","webpack://web/../../../src/components/VDataTable/RowGroup.ts","webpack://web/../../../src/components/VDataTable/VSimpleTable.ts","webpack://web/../../../src/components/VDataTable/MobileRow.ts","webpack://web/../../../src/components/VDataTable/VDataTable.ts","webpack://web/../../../src/components/VDialog/VDialog.ts","webpack://web/../../../src/components/VDivider/VDivider.ts","webpack://web/../../../src/components/VForm/VForm.ts","webpack://web/../../../src/components/VGrid/VCol.ts","webpack://web/../../../src/components/VGrid/grid.ts","webpack://web/../../../src/components/VGrid/VContainer.ts","webpack://web/../../../src/components/VGrid/VRow.ts","webpack://web/../../../src/components/VGrid/VSpacer.ts","webpack://web/../../../src/components/VIcon/VIcon.ts","webpack://web/../../../src/components/VIcon/index.ts","webpack://web/../../../src/components/VResponsive/VResponsive.ts","webpack://web/../../../src/components/VResponsive/index.ts","webpack://web/../../../src/components/VImg/VImg.ts","webpack://web/../../../src/components/VMessages/VMessages.ts","webpack://web/../../../src/components/VMessages/index.ts","webpack://web/../../../src/components/VInput/VInput.ts","webpack://web/../../../src/components/VInput/index.ts","webpack://web/../../../src/components/VItemGroup/VItemGroup.ts","webpack://web/../../../src/components/VLabel/VLabel.ts","webpack://web/../../../src/components/VLabel/index.ts","webpack://web/../../../src/components/VList/VList.ts","webpack://web/../../../src/components/VList/VListItem.ts","webpack://web/../../../src/components/VList/VListItemAction.ts","webpack://web/../../../src/components/VList/VListItemIcon.ts","webpack://web/../../../src/components/VList/VListGroup.ts","webpack://web/../../../src/components/VList/VListItemGroup.ts","webpack://web/../../../src/components/VAvatar/index.ts","webpack://web/../../../src/components/VList/VListItemAvatar.ts","webpack://web/../../../src/components/VList/index.ts","webpack://web/../../../src/components/VMain/VMain.ts","webpack://web/../../../src/components/VMenu/VMenu.ts","webpack://web/../../../src/mixins/applicationable/index.ts","webpack://web/../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack://web/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://web/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://web/../../../src/components/VMenu/index.ts","webpack://web/../../../src/components/VDivider/index.ts","webpack://web/../../../src/components/VSubheader/index.ts","webpack://web/../../../src/components/VSelect/VSelectList.ts","webpack://web/../../../src/mixins/filterable/index.ts","webpack://web/../../../src/components/VSelect/VSelect.ts","webpack://web/../../../src/components/VSheet/VSheet.ts","webpack://web/../../../src/components/VSheet/index.ts","webpack://web/../../../src/components/VSkeletonLoader/VSkeletonLoader.ts","webpack://web/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://web/../../../src/components/VSnackbar/VSnackbar.ts","webpack://web/../../../src/components/VSubheader/VSubheader.ts","webpack://web/../../../src/components/VSwitch/VSwitch.ts","webpack://web/../../../src/components/VTabs/VTab.ts","webpack://web/../../../src/components/VTabs/VTabsBar.ts","webpack://web/../../../src/components/VWindow/VWindow.ts","webpack://web/../../../src/components/VTabs/VTabsItems.ts","webpack://web/../../../src/components/VTabs/VTabsSlider.ts","webpack://web/../../../src/components/VTabs/VTabs.ts","webpack://web/../../../src/components/VCounter/VCounter.ts","webpack://web/../../../src/components/VCounter/index.ts","webpack://web/../../../src/mixins/intersectable/index.ts","webpack://web/../../../src/components/VTextField/VTextField.ts","webpack://web/../../../src/components/VTextarea/VTextarea.ts","webpack://web/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://web/../../../src/components/VToolbar/VToolbar.ts","webpack://web/../../../src/components/VToolbar/index.ts","webpack://web/../../../src/components/VTooltip/VTooltip.ts","webpack://web/../../../src/components/transitions/createTransition.ts","webpack://web/../../../src/components/transitions/expand-transition.ts","webpack://web/../../../src/components/transitions/index.ts","webpack://web/../../../src/directives/click-outside/index.ts","webpack://web/../../../src/directives/intersect/index.ts","webpack://web/../../../src/directives/resize/index.ts","webpack://web/../../../src/directives/ripple/index.ts","webpack://web/../../../src/directives/touch/index.ts","webpack://web/../src/install.ts","webpack://web/../../src/locale/en.ts","webpack://web/../../../src/presets/default/index.ts","webpack://web/../../../src/services/presets/index.ts","webpack://web/../../../src/services/application/index.ts","webpack://web/../../../src/services/breakpoint/index.ts","webpack://web/../../../../src/services/icons/presets/mdi-svg.ts","webpack://web/../../../../src/services/icons/presets/md.ts","webpack://web/../../../../src/services/icons/presets/mdi.ts","webpack://web/../../../../src/services/icons/presets/fa.ts","webpack://web/../../../../src/services/icons/presets/fa4.ts","webpack://web/../../../../src/services/icons/presets/fa-svg.ts","webpack://web/../../../../src/services/icons/presets/index.ts","webpack://web/../../../src/services/icons/index.ts","webpack://web/../../../src/services/lang/index.ts","webpack://web/../../../src/util/color/transformSRGB.ts","webpack://web/../../../src/util/color/transformCIELAB.ts","webpack://web/../../../src/services/theme/utils.ts","webpack://web/../../../src/services/theme/index.ts","webpack://web/../src/framework.ts","webpack://web/../../../src/mixins/activatable/index.ts","webpack://web/../../../src/mixins/binds-attrs/index.ts","webpack://web/../../../src/mixins/bootable/index.ts","webpack://web/../../../src/mixins/colorable/index.ts","webpack://web/../../../src/mixins/comparable/index.ts","webpack://web/../../../src/mixins/delayable/index.ts","webpack://web/../../../src/mixins/dependent/index.ts","webpack://web/../../../src/mixins/detachable/index.ts","webpack://web/../../../src/mixins/elevatable/index.ts","webpack://web/../../../src/mixins/groupable/index.ts","webpack://web/../../../src/components/VProgressLinear/index.ts","webpack://web/../../../src/mixins/loadable/index.ts","webpack://web/../../../src/mixins/measurable/index.ts","webpack://web/../../../src/mixins/menuable/index.ts","webpack://web/../../../src/mixins/mobile/index.ts","webpack://web/../../../src/components/VOverlay/VOverlay.ts","webpack://web/../../../src/components/VOverlay/index.ts","webpack://web/../../../src/mixins/overlayable/index.ts","webpack://web/../../../src/mixins/positionable/index.ts","webpack://web/../../../src/mixins/proxyable/index.ts","webpack://web/../../../src/mixins/registrable/index.ts","webpack://web/../../../src/mixins/returnable/index.ts","webpack://web/../../../src/mixins/roundable/index.ts","webpack://web/../../../src/mixins/routable/index.ts","webpack://web/../../../src/mixins/rippleable/index.ts","webpack://web/../../../src/mixins/selectable/index.ts","webpack://web/../../../src/mixins/sizeable/index.ts","webpack://web/../../../src/mixins/ssr-bootable/index.ts","webpack://web/../../../src/mixins/stackable/index.ts","webpack://web/../../../src/mixins/themeable/index.ts","webpack://web/../../../src/mixins/toggleable/index.ts","webpack://web/../../../src/mixins/validatable/index.ts","webpack://web/../../../src/services/goto/easing-patterns.ts","webpack://web/../../../src/services/goto/util.ts","webpack://web/../../../src/services/goto/index.ts","webpack://web/../../../src/services/service/index.ts","webpack://web/../../src/util/colorUtils.ts","webpack://web/../../src/util/console.ts","webpack://web/../../src/util/dom.ts","webpack://web/../../src/util/helpers.ts","webpack://web/../../src/util/mergeData.ts","webpack://web/../../src/util/mixins.ts","webpack://web/./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack://web/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://web/./node_modules/vue-router/dist/vue-router.esm.js","webpack://web/./node_modules/vue/dist/vue.runtime.esm.js","webpack://web/./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack://web/./node_modules/vuetify-loader/lib/runtime/installComponents.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '
';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `
`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\nvar platform = require('../platform');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var withXSRFToken = config.withXSRFToken;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, req) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n // false, 0 (zero number), and '' (empty string) are valid JSON values\n if (!requestData && requestData !== false && requestData !== 0 && requestData !== '') {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\nvar formDataToJSON = require('./helpers/formDataToJSON');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\naxios.formToJSON = function(thing) {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n var paramsSerializer = config.paramsSerializer;\n\n utils.isFunction(paramsSerializer) && (config.paramsSerializer = {serialize: paramsSerializer});\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Clear all interceptors from the stack\n */\nInterceptorManager.prototype.clear = function clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n null,\n config.transformRequest\n );\n\n normalizeHeaderName(config.headers, 'Accept');\n normalizeHeaderName(config.headers, 'Content-Type');\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n response.status,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n reason.response.status,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isEmptyObject(source)) {\n return utils.merge({}, target);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'withXSRFToken': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Number} status HTTP status code\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, status, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers, status);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\nvar toURLEncodedForm = require('../helpers/toURLEncodedForm');\nvar platform = require('../platform');\nvar formDataToJSON = require('../helpers/formDataToJSON');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n var contentType = headers && headers['Content-Type'] || '';\n var hasJSONContentType = contentType.indexOf('application/json') > -1;\n var isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n var isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') !== -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n var _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","// eslint-disable-next-line strict\nmodule.exports = require('form-data');\n","module.exports = {\n \"version\": \"0.28.0\"\n};","'use strict';\n\nvar toFormData = require('./toFormData');\n\nfunction encode(str) {\n var charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nvar prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n var _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nmodule.exports = AxiosURLSearchParams;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosURLSearchParams = require('../helpers/AxiosURLSearchParams');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n var _encode = options && options.encode || encode;\n\n var serializerParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n\n if (serializerParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializerParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(function(match) {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\nfunction arrayToObject(arr) {\n var obj = {};\n var keys = Object.keys(arr);\n var i;\n var len = keys.length;\n var key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n var name = path[index++];\n var isNumericKey = Number.isFinite(+name);\n var isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProperty(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n var result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n var obj = {};\n\n utils.forEachEntry(formData, function(name, value) {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nmodule.exports = formDataToJSON;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.slice(0, i)).toLowerCase();\n val = utils.trim(line.slice(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosError = require('../core/AxiosError');\nvar envFormData = require('../env/classes/FormData');\n\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nvar predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (envFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n var metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n var visitor = options.visitor || defaultVisitor;\n var dots = options.dots;\n var indexes = options.indexes;\n var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n var useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n var arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n (utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !utils.isUndefined(el) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n var stack = [];\n\n var exposedHelpers = Object.assign(predicates, {\n defaultVisitor: defaultVisitor,\n convertValue: convertValue,\n isVisitable: isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n var result = !utils.isUndefined(el) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar utils = require('../utils');\nvar toFormData = require('./toFormData');\nvar platform = require('../platform/');\n\nmodule.exports = function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nmodule.exports = FormData;\n","'use strict';\n\nvar AxiosURLSearchParams = require('../../../helpers/AxiosURLSearchParams');\n\nmodule.exports = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nmodule.exports = {\n isBrowser: true,\n classes: {\n URLSearchParams: require('./classes/URLSearchParams'),\n FormData: require('./classes/FormData'),\n Blob: Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nmodule.exports = require('./node/');\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a empty Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a empty Object, otherwise false\n */\nfunction isEmptyObject(val) {\n return val && Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n var product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter, propFilter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n * @param {*} [thing]\n * @returns {?Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n var i = thing.length;\n if (!isNumber(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nfunction forEachEntry(obj, fn) {\n var generator = obj && obj[Symbol.iterator];\n\n var iterator = generator.call(obj);\n\n var result;\n\n while ((result = iterator.next()) && !result.done) {\n var pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\nfunction matchAll(regExp, str) {\n var matches;\n var arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\nvar isHTMLForm = kindOfTest('HTMLFormElement');\n\nvar hasOwnProperty = (function resolver(_hasOwnProperty) {\n return function(obj, prop) {\n return _hasOwnProperty.call(obj, prop);\n };\n})(Object.prototype.hasOwnProperty);\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isEmptyObject: isEmptyObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList,\n forEachEntry: forEachEntry,\n matchAll: matchAll,\n isHTMLForm: isHTMLForm,\n hasOwnProperty: hasOwnProperty\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// Depends on jsonlint.js from https://github.com/zaach/jsonlint\n\n// declare global: jsonlint\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.registerHelper(\"lint\", \"json\", function(text) {\n var found = [];\n if (!window.jsonlint) {\n if (window.console) {\n window.console.error(\"Error: window.jsonlint not defined, CodeMirror JSON linting cannot run.\");\n }\n return found;\n }\n // for jsonlint's web dist jsonlint is exported as an object with a single property parser, of which parseError\n // is a subproperty\n var jsonlint = window.jsonlint.parser || window.jsonlint\n jsonlint.parseError = function(str, hash) {\n var loc = hash.loc;\n found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),\n to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),\n message: str});\n };\n try { jsonlint.parse(text); }\n catch(e) {}\n return found;\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\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n // Others should be {open, close, mode [, delimStyle] [, innerStyle] [, parseDelimiters]} objects\n var others = Array.prototype.slice.call(arguments, 1);\n\n function indexOf(string, pattern, from, returnEnd) {\n if (typeof pattern == \"string\") {\n var found = string.indexOf(pattern, from);\n return returnEnd && found > -1 ? found + pattern.length : found;\n }\n var m = pattern.exec(from ? string.slice(from) : string);\n return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;\n }\n\n return {\n startState: function() {\n return {\n outer: CodeMirror.startState(outer),\n innerActive: null,\n inner: null,\n startingInner: false\n };\n },\n\n copyState: function(state) {\n return {\n outer: CodeMirror.copyState(outer, state.outer),\n innerActive: state.innerActive,\n inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner),\n startingInner: state.startingInner\n };\n },\n\n token: function(stream, state) {\n if (!state.innerActive) {\n var cutOff = Infinity, oldContent = stream.string;\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n var found = indexOf(oldContent, other.open, stream.pos);\n if (found == stream.pos) {\n if (!other.parseDelimiters) stream.match(other.open);\n state.startingInner = !!other.parseDelimiters\n state.innerActive = other;\n\n // Get the outer indent, making sure to handle CodeMirror.Pass\n var outerIndent = 0;\n if (outer.indent) {\n var possibleOuterIndent = outer.indent(state.outer, \"\", \"\");\n if (possibleOuterIndent !== CodeMirror.Pass) outerIndent = possibleOuterIndent;\n }\n\n state.inner = CodeMirror.startState(other.mode, outerIndent);\n return other.delimStyle && (other.delimStyle + \" \" + other.delimStyle + \"-open\");\n } else if (found != -1 && found < cutOff) {\n cutOff = found;\n }\n }\n if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n var outerToken = outer.token(stream, state.outer);\n if (cutOff != Infinity) stream.string = oldContent;\n return outerToken;\n } else {\n var curInner = state.innerActive, oldContent = stream.string;\n if (!curInner.close && stream.sol()) {\n state.innerActive = state.inner = null;\n return this.token(stream, state);\n }\n var found = curInner.close && !state.startingInner ?\n indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1;\n if (found == stream.pos && !curInner.parseDelimiters) {\n stream.match(curInner.close);\n state.innerActive = state.inner = null;\n return curInner.delimStyle && (curInner.delimStyle + \" \" + curInner.delimStyle + \"-close\");\n }\n if (found > -1) stream.string = oldContent.slice(0, found);\n var innerToken = curInner.mode.token(stream, state.inner);\n if (found > -1) stream.string = oldContent;\n else if (stream.pos > stream.start) state.startingInner = false\n\n if (found == stream.pos && curInner.parseDelimiters)\n state.innerActive = state.inner = null;\n\n if (curInner.innerStyle) {\n if (innerToken) innerToken = innerToken + \" \" + curInner.innerStyle;\n else innerToken = curInner.innerStyle;\n }\n\n return innerToken;\n }\n },\n\n indent: function(state, textAfter, line) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (!mode.indent) return CodeMirror.Pass;\n return mode.indent(state.innerActive ? state.inner : state.outer, textAfter, line);\n },\n\n blankLine: function(state) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (mode.blankLine) {\n mode.blankLine(state.innerActive ? state.inner : state.outer);\n }\n if (!state.innerActive) {\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n if (other.open === \"\\n\") {\n state.innerActive = other;\n state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\", \"\") : 0);\n }\n }\n } else if (state.innerActive.close === \"\\n\") {\n state.innerActive = state.inner = null;\n }\n },\n\n electricChars: outer.electricChars,\n\n innerMode: function(state) {\n return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\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// 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(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.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n if (val.unicode) flags += \"u\"\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n (state.pending || (state.pending = [])).push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\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() {\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 activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.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 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() {\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 -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.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());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\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();\n top -= pageScrollY();\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 if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.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();\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();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.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()) { 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 sel = window.getSelection(), range = document.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\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();\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 window.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(); }\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();\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\\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 ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"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 disableBrowserMagic(te);\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(){window.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() },\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, window.innerHeight || document.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 cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\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() == 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() != 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 };\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 };\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) { return }\n var cm = this.cm;\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 };\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() != 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 || !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 = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.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();\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.6\";\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/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\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.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle number literals\n if (stream.match(/^-?[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\/\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol()) {\n return outclass;\n }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\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\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\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\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\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(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\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\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\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(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match('+#{', false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\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(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match('@extend')){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\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.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b(?!-)/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match('.');\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n // Note, \"url-prefix\" should precede \"url\" in order to match correctly in documentTypesRegexp\n var documentTypes_ = [\"domain\", \"regexp\", \"url-prefix\", \"url\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\",\"dynamic-range\",\"video-dynamic-range\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"conic-gradient\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"high\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-play-button\",\"media-slider\",\"media-sliderthumb\",\"media-volume-slider\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeating-conic-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"standard\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\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 \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\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","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n defineProperty(value, 'name', { value: name, configurable: true });\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\n },\n})\n","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import './VBottomSheet.sass'\n\n// Extensions\nimport VDialog from '../VDialog/VDialog'\n\n/* @vue/component */\nexport default VDialog.extend({\n name: 'v-bottom-sheet',\n\n props: {\n inset: Boolean,\n maxWidth: [String, Number],\n transition: {\n type: String,\n default: 'bottom-sheet-transition',\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VDialog.options.computed.classes.call(this),\n 'v-bottom-sheet': true,\n 'v-bottom-sheet--inset': this.inset,\n }\n },\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport './VChipGroup.sass'\n\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n BaseSlideGroup,\n Colorable\n).extend({\n name: 'v-chip-group',\n\n provide () {\n return {\n chipGroup: this,\n }\n },\n\n props: {\n column: Boolean,\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-chip-group': true,\n 'v-chip-group--column': this.column,\n }\n },\n },\n\n watch: {\n column (val) {\n if (val) this.scrollOffset = 0\n\n this.$nextTick(this.onResize)\n },\n },\n\n methods: {\n genData () {\n return this.setTextColor(this.color, {\n ...BaseSlideGroup.options.methods.genData.call(this),\n })\n },\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n attrs: {\n tabindex: this.isActive ? 0 : undefined,\n },\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n tabindex: type === 'clear' ? -1 : undefined,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n if (!this.disabled) {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n }\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img(props)\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, this.$slots.default)\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) ?? '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n obs.observe(this.$refs.content)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n } else {\n let itemsLength = 0\n this.$on('hook:beforeUpdate', () => {\n itemsLength = (this.$refs.content?.children || []).length\n })\n this.$on('hook:updated', () => {\n if (itemsLength === (this.$refs.content?.children || []).length) return\n this.setWidths()\n })\n }\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n }\n\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '