{"version":3,"file":"js/chunk-vendors-legacy.741c8ed7.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/Cancel.js","webpack://web/./node_modules/axios/lib/cancel/CancelToken.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/InterceptorManager.js","webpack://web/./node_modules/axios/lib/core/buildFullPath.js","webpack://web/./node_modules/axios/lib/core/createError.js","webpack://web/./node_modules/axios/lib/core/dispatchRequest.js","webpack://web/./node_modules/axios/lib/core/enhanceError.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.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/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/spread.js","webpack://web/./node_modules/axios/lib/helpers/validator.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-constructor.js","webpack://web/./node_modules/core-js/internals/a-possible-prototype.js","webpack://web/./node_modules/core-js/internals/add-to-unscopables.js","webpack://web/./node_modules/core-js/internals/advance-string-index.js","webpack://web/./node_modules/core-js/internals/an-instance.js","webpack://web/./node_modules/core-js/internals/an-object.js","webpack://web/./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack://web/./node_modules/core-js/internals/array-fill.js","webpack://web/./node_modules/core-js/internals/array-for-each.js","webpack://web/./node_modules/core-js/internals/array-from.js","webpack://web/./node_modules/core-js/internals/array-includes.js","webpack://web/./node_modules/core-js/internals/array-iteration.js","webpack://web/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://web/./node_modules/core-js/internals/array-method-is-strict.js","webpack://web/./node_modules/core-js/internals/array-slice-simple.js","webpack://web/./node_modules/core-js/internals/array-slice.js","webpack://web/./node_modules/core-js/internals/array-sort.js","webpack://web/./node_modules/core-js/internals/array-species-constructor.js","webpack://web/./node_modules/core-js/internals/array-species-create.js","webpack://web/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://web/./node_modules/core-js/internals/check-correctness-of-iteration.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/collection-strong.js","webpack://web/./node_modules/core-js/internals/collection.js","webpack://web/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://web/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://web/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://web/./node_modules/core-js/internals/create-html.js","webpack://web/./node_modules/core-js/internals/create-iterator-constructor.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/create-property.js","webpack://web/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://web/./node_modules/core-js/internals/define-built-in.js","webpack://web/./node_modules/core-js/internals/define-built-ins.js","webpack://web/./node_modules/core-js/internals/define-global-property.js","webpack://web/./node_modules/core-js/internals/define-iterator.js","webpack://web/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://web/./node_modules/core-js/internals/delete-property-or-throw.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/does-not-exceed-safe-integer.js","webpack://web/./node_modules/core-js/internals/dom-iterables.js","webpack://web/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://web/./node_modules/core-js/internals/engine-ff-version.js","webpack://web/./node_modules/core-js/internals/engine-is-browser.js","webpack://web/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://web/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://web/./node_modules/core-js/internals/engine-is-ios.js","webpack://web/./node_modules/core-js/internals/engine-is-node.js","webpack://web/./node_modules/core-js/internals/engine-is-webos-webkit.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/engine-webkit-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/fix-regexp-well-known-symbol-logic.js","webpack://web/./node_modules/core-js/internals/flatten-into-array.js","webpack://web/./node_modules/core-js/internals/freezing.js","webpack://web/./node_modules/core-js/internals/function-apply.js","webpack://web/./node_modules/core-js/internals/function-bind-context.js","webpack://web/./node_modules/core-js/internals/function-bind-native.js","webpack://web/./node_modules/core-js/internals/function-bind.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-iterator-method.js","webpack://web/./node_modules/core-js/internals/get-iterator.js","webpack://web/./node_modules/core-js/internals/get-method.js","webpack://web/./node_modules/core-js/internals/get-substitution.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/host-report-errors.js","webpack://web/./node_modules/core-js/internals/html.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-metadata.js","webpack://web/./node_modules/core-js/internals/internal-state.js","webpack://web/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://web/./node_modules/core-js/internals/is-array.js","webpack://web/./node_modules/core-js/internals/is-callable.js","webpack://web/./node_modules/core-js/internals/is-constructor.js","webpack://web/./node_modules/core-js/internals/is-data-descriptor.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-regexp.js","webpack://web/./node_modules/core-js/internals/is-symbol.js","webpack://web/./node_modules/core-js/internals/iterate.js","webpack://web/./node_modules/core-js/internals/iterator-close.js","webpack://web/./node_modules/core-js/internals/iterators-core.js","webpack://web/./node_modules/core-js/internals/iterators.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-sign.js","webpack://web/./node_modules/core-js/internals/math-trunc.js","webpack://web/./node_modules/core-js/internals/microtask.js","webpack://web/./node_modules/core-js/internals/native-symbol-registry.js","webpack://web/./node_modules/core-js/internals/native-symbol.js","webpack://web/./node_modules/core-js/internals/native-url.js","webpack://web/./node_modules/core-js/internals/native-weak-map.js","webpack://web/./node_modules/core-js/internals/new-promise-capability.js","webpack://web/./node_modules/core-js/internals/normalize-string-argument.js","webpack://web/./node_modules/core-js/internals/not-a-regexp.js","webpack://web/./node_modules/core-js/internals/object-assign.js","webpack://web/./node_modules/core-js/internals/object-create.js","webpack://web/./node_modules/core-js/internals/object-define-properties.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-external.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-get-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-is-extensible.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-keys.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/object-to-array.js","webpack://web/./node_modules/core-js/internals/object-to-string.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/path.js","webpack://web/./node_modules/core-js/internals/perform.js","webpack://web/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://web/./node_modules/core-js/internals/promise-native-constructor.js","webpack://web/./node_modules/core-js/internals/promise-resolve.js","webpack://web/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://web/./node_modules/core-js/internals/proxy-accessor.js","webpack://web/./node_modules/core-js/internals/queue.js","webpack://web/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://web/./node_modules/core-js/internals/regexp-exec.js","webpack://web/./node_modules/core-js/internals/regexp-flags.js","webpack://web/./node_modules/core-js/internals/regexp-get-flags.js","webpack://web/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://web/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://web/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://web/./node_modules/core-js/internals/require-object-coercible.js","webpack://web/./node_modules/core-js/internals/same-value.js","webpack://web/./node_modules/core-js/internals/set-species.js","webpack://web/./node_modules/core-js/internals/set-to-string-tag.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/species-constructor.js","webpack://web/./node_modules/core-js/internals/string-html-forced.js","webpack://web/./node_modules/core-js/internals/string-multibyte.js","webpack://web/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://web/./node_modules/core-js/internals/string-repeat.js","webpack://web/./node_modules/core-js/internals/string-trim-forced.js","webpack://web/./node_modules/core-js/internals/string-trim.js","webpack://web/./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack://web/./node_modules/core-js/internals/task.js","webpack://web/./node_modules/core-js/internals/this-number-value.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/validate-arguments-length.js","webpack://web/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://web/./node_modules/core-js/internals/well-known-symbol.js","webpack://web/./node_modules/core-js/internals/whitespaces.js","webpack://web/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://web/./node_modules/core-js/modules/es.array.concat.js","webpack://web/./node_modules/core-js/modules/es.array.fill.js","webpack://web/./node_modules/core-js/modules/es.array.filter.js","webpack://web/./node_modules/core-js/modules/es.array.find-index.js","webpack://web/./node_modules/core-js/modules/es.array.find.js","webpack://web/./node_modules/core-js/modules/es.array.flat.js","webpack://web/./node_modules/core-js/modules/es.array.from.js","webpack://web/./node_modules/core-js/modules/es.array.includes.js","webpack://web/./node_modules/core-js/modules/es.array.iterator.js","webpack://web/./node_modules/core-js/modules/es.array.join.js","webpack://web/./node_modules/core-js/modules/es.array.map.js","webpack://web/./node_modules/core-js/modules/es.array.slice.js","webpack://web/./node_modules/core-js/modules/es.array.sort.js","webpack://web/./node_modules/core-js/modules/es.array.splice.js","webpack://web/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://web/./node_modules/core-js/modules/es.error.cause.js","webpack://web/./node_modules/core-js/modules/es.function.name.js","webpack://web/./node_modules/core-js/modules/es.json.stringify.js","webpack://web/./node_modules/core-js/modules/es.json.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.map.constructor.js","webpack://web/./node_modules/core-js/modules/es.map.js","webpack://web/./node_modules/core-js/modules/es.math.cbrt.js","webpack://web/./node_modules/core-js/modules/es.math.sign.js","webpack://web/./node_modules/core-js/modules/es.math.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.number.constructor.js","webpack://web/./node_modules/core-js/modules/es.number.is-nan.js","webpack://web/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://web/./node_modules/core-js/modules/es.object.assign.js","webpack://web/./node_modules/core-js/modules/es.object.freeze.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack://web/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://web/./node_modules/core-js/modules/es.object.is.js","webpack://web/./node_modules/core-js/modules/es.object.keys.js","webpack://web/./node_modules/core-js/modules/es.object.to-string.js","webpack://web/./node_modules/core-js/modules/es.object.values.js","webpack://web/./node_modules/core-js/modules/es.promise.all.js","webpack://web/./node_modules/core-js/modules/es.promise.catch.js","webpack://web/./node_modules/core-js/modules/es.promise.constructor.js","webpack://web/./node_modules/core-js/modules/es.promise.finally.js","webpack://web/./node_modules/core-js/modules/es.promise.js","webpack://web/./node_modules/core-js/modules/es.promise.race.js","webpack://web/./node_modules/core-js/modules/es.promise.reject.js","webpack://web/./node_modules/core-js/modules/es.promise.resolve.js","webpack://web/./node_modules/core-js/modules/es.reflect.construct.js","webpack://web/./node_modules/core-js/modules/es.reflect.get.js","webpack://web/./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://web/./node_modules/core-js/modules/es.regexp.dot-all.js","webpack://web/./node_modules/core-js/modules/es.regexp.exec.js","webpack://web/./node_modules/core-js/modules/es.regexp.sticky.js","webpack://web/./node_modules/core-js/modules/es.regexp.test.js","webpack://web/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://web/./node_modules/core-js/modules/es.string.anchor.js","webpack://web/./node_modules/core-js/modules/es.string.ends-with.js","webpack://web/./node_modules/core-js/modules/es.string.fixed.js","webpack://web/./node_modules/core-js/modules/es.string.includes.js","webpack://web/./node_modules/core-js/modules/es.string.iterator.js","webpack://web/./node_modules/core-js/modules/es.string.link.js","webpack://web/./node_modules/core-js/modules/es.string.match.js","webpack://web/./node_modules/core-js/modules/es.string.repeat.js","webpack://web/./node_modules/core-js/modules/es.string.replace.js","webpack://web/./node_modules/core-js/modules/es.string.search.js","webpack://web/./node_modules/core-js/modules/es.string.small.js","webpack://web/./node_modules/core-js/modules/es.string.split.js","webpack://web/./node_modules/core-js/modules/es.string.starts-with.js","webpack://web/./node_modules/core-js/modules/es.string.trim.js","webpack://web/./node_modules/core-js/modules/es.symbol.async-iterator.js","webpack://web/./node_modules/core-js/modules/es.symbol.constructor.js","webpack://web/./node_modules/core-js/modules/es.symbol.description.js","webpack://web/./node_modules/core-js/modules/es.symbol.for.js","webpack://web/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://web/./node_modules/core-js/modules/es.symbol.js","webpack://web/./node_modules/core-js/modules/es.symbol.key-for.js","webpack://web/./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack://web/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://web/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://web/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://web/./node_modules/core-js/modules/web.url-search-params.js","webpack://web/./node_modules/core-js/modules/web.url.constructor.js","webpack://web/./node_modules/core-js/modules/web.url.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/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/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","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.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 createError = require('../core/createError');\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\n if (utils.isFormData(requestData)) {\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 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(resolve, reject, 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(createError('Request aborted', config, 'ECONNABORTED', 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(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\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 var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\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) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\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');\n\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 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// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\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\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\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 this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\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\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 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 {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\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, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\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 return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\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 Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\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 * 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 enhanceError = require('./enhanceError');\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 {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\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 config.transformRequest\n );\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 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 config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.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 };\n };\n return error;\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 var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\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 function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\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(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\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 {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, 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);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\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: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n 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 if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\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 validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\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 = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\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 * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\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\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\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 (typeof payload === 'object') && (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.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(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\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 pkg = require('./../../package.json');\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 = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.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 Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !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 TypeError('options must be an object');\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 TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\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/**\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 toString.call(val) === '[object Array]';\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 * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\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) && (val.buffer instanceof ArrayBuffer);\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 (toString.call(val) !== '[object 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 Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\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 URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\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+|\\s+$/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 if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\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\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 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};\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 isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\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 wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\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","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\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 bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\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","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\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 wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\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","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\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 defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\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","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\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 $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","module.exports = typeof window == 'object' && typeof Deno != 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\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","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\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","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\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 uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\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 classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\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 uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\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 global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\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 $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\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","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\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 isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\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 bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\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","// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es-x/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n == 0 || n != n ? n : n < 0 ? -1 : 1;\n};\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","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\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 fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\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","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\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 isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\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","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\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 hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\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","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\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 DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\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 global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\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 Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\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","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\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 anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\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 $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\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","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\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","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\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","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n cbrt: function cbrt(x) {\n var n = +x;\n return sign(n) * pow(abs(n), 1 / 3);\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return number != number;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n if (descriptor) return isDataDescriptor(descriptor)\n ? descriptor.value\n : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n configurable: true,\n get: function sticky() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).sticky;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar $TypeError = TypeError;\nvar un$Test = uncurryThis(/./.test);\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n var exec = this.exec;\n if (!isCallable(exec)) return un$Test(this, str);\n var result = call(exec, this, str);\n if (result !== null && !isObject(result)) {\n throw new $TypeError('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return un$StartsWith\n ? un$StartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\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","//! 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.3\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.3';\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 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 },\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, `${props.options.groupBy[0]}: ${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.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.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 // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.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.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) 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 tabindex: this.isActive ? 0 : undefined,\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 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 },\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 => 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 = value === this.internalValue\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 /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\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 {\n escapeHTML,\n getPropertyFromItem,\n} 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 escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(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 const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\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 './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 => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\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 beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\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 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 '